From 0c1429fd7e6e1432e480e59ffc5b0e86588cd26e Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Tue, 23 Jun 2026 08:50:28 -0700 Subject: Tweaked for generality. --- src/context.rs | 18 ++++++++++++++++++ src/lib.rs | 21 ++------------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/context.rs b/src/context.rs index 0b51677..6f8e04f 100644 --- a/src/context.rs +++ b/src/context.rs @@ -21,6 +21,24 @@ pub trait MappedList<'a> { fn get_index(&'a self, id: usize) -> Option>; fn for_each(&'a self, func: &dyn Fn(&MappedValue<'a>, &mut String) -> CrimResult<()>) -> CrimResult; } + +impl<'a, T: MappedStructure<'a>> MappedList<'a> for Vec { + fn get_index(&'a self, id: usize) -> Option> { + if let Some(x) = self.get(id) { + Some(MappedValue::<'a>::Struct(x)) + } else { + None + } + } + + fn for_each(&'a self, func: &dyn Fn(&MappedValue<'a>, &mut String) -> CrimResult<()>) -> CrimResult { + let mut buf = String::new(); + for i in self { + func( &MappedValue::Struct(i), &mut buf )?; + } + Ok(buf) + } +} impl<'a> MappedList<'a> for Vec { fn get_index(&'a self, id: usize) -> Option> { diff --git a/src/lib.rs b/src/lib.rs index 162c30c..db88a69 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -522,24 +522,6 @@ Now with explicit outputs: } } - impl<'a> MappedList<'a> for Vec { - fn get_index(&'a self, id: usize) -> Option> { - if let Some(x) = self.get(id) { - Some(MappedValue::<'a>::Struct(x)) - } else { - None - } - } - - fn for_each(&'a self, func: &dyn Fn(&MappedValue<'a>, &mut String) -> CrimResult<()>) -> CrimResult { - let mut buf = String::new(); - for i in self { - func( &MappedValue::Struct(i), &mut buf )?; - } - Ok(buf) - } - } - #[test] fn custom() -> Result<(), CrimError> { let page = Page::new(); @@ -552,9 +534,10 @@ Now with explicit outputs: l.for_each(&|x: &MappedValue, buf: &mut String| { if let MappedValue::Struct(s) = x { println!(" - {:?}", s.get_value(&"title")); + buf.push_str(&format!("{:?}",s.get_value(&"title"))); } Ok(()) - }); + }).expect("loop"); } Ok(()) } -- cgit v1.2.3