diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-02-27 20:56:20 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-02-27 20:56:20 +0100 |
| commit | 7930d543a2aa68d4ad2958605827d7eb1baa91f8 (patch) | |
| tree | fe59d1f549e303a96b78d3e925d75abb70b73af0 /common/object/src/path.rs | |
| parent | c05bfcc2775f0e11db6e856bfcf06d0419c35d54 (diff) | |
| download | jellything-7930d543a2aa68d4ad2958605827d7eb1baa91f8.tar jellything-7930d543a2aa68d4ad2958605827d7eb1baa91f8.tar.bz2 jellything-7930d543a2aa68d4ad2958605827d7eb1baa91f8.tar.zst | |
reimplement Object as slice type
Diffstat (limited to 'common/object/src/path.rs')
| -rw-r--r-- | common/object/src/path.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/common/object/src/path.rs b/common/object/src/path.rs index 793400c..83b2c43 100644 --- a/common/object/src/path.rs +++ b/common/object/src/path.rs @@ -5,30 +5,30 @@ */ use crate::{Object, Tag, TypedTag}; -use std::{fmt::Display, marker::PhantomData, str::FromStr}; +use std::{fmt::Display, str::FromStr}; #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct Path(pub Vec<Tag>); impl Path { - pub fn get_matching_value<'a>(&self, ob: Object<'a>) -> Option<&'a [u8]> { - fn recurse<'a>(ob: Object<'a>, path: &[Tag]) -> Option<&'a [u8]> { + pub fn get_matching_value<'a>(&self, ob: &'a Object) -> Option<&'a [u8]> { + fn recurse<'a>(ob: &'a Object, path: &[Tag]) -> Option<&'a [u8]> { if path.len() > 1 { - recurse(ob.get(TypedTag(path[0], PhantomData))?, &path[1..]) + recurse(ob.get(TypedTag::<Object>::new(path[0]))?, &path[1..]) } else { - ob.get(TypedTag(path[0], PhantomData)) + ob.get(TypedTag::<[u8]>::new(path[0])) } } recurse(ob, &self.0) } - pub fn get_matching_values<'a>(&self, ob: Object<'a>) -> Vec<&'a [u8]> { - fn recurse<'a>(ob: Object<'a>, out: &mut Vec<&'a [u8]>, path: &[Tag]) { + pub fn get_matching_values<'a>(&self, ob: &'a Object) -> Vec<&'a [u8]> { + fn recurse<'a>(ob: &'a Object, out: &mut Vec<&'a [u8]>, path: &[Tag]) { if path.len() > 1 { - for nested in ob.iter(TypedTag(path[0], PhantomData::<Object>)) { + for nested in ob.iter(TypedTag::<Object>::new(path[0])) { recurse(nested, out, &path[1..]); } } else { - out.extend(ob.iter(TypedTag(path[0], PhantomData::<&[u8]>))); + out.extend(ob.iter(TypedTag::<[u8]>::new(path[0]))); } } let mut out = Vec::new(); |