aboutsummaryrefslogtreecommitdiff
path: root/common/object/src/path.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-02-27 20:56:20 +0100
committermetamuffin <metamuffin@disroot.org>2026-02-27 20:56:20 +0100
commit7930d543a2aa68d4ad2958605827d7eb1baa91f8 (patch)
treefe59d1f549e303a96b78d3e925d75abb70b73af0 /common/object/src/path.rs
parentc05bfcc2775f0e11db6e856bfcf06d0419c35d54 (diff)
downloadjellything-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.rs18
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();