From a7ae82db8aef8b327e893a4619346ad59b2ed895 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Thu, 18 Jun 2026 23:52:39 -0700 Subject: Almost there --- src/context.rs | 2 ++ src/lib.rs | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/context.rs b/src/context.rs index 83f8539..4de5b45 100644 --- a/src/context.rs +++ b/src/context.rs @@ -44,6 +44,8 @@ impl<'a> MappedStructure<'a> for Context { pub trait MappedList<'a> { fn get_index(&'a self, id: usize) -> Option>; +// fn get_iterator(&'a self) -> MappedListIterator<'a>; + fn for_each(&'a self, func: &dyn Fn(&MappedValue<'a>)); } pub enum MappedValue<'a> { diff --git a/src/lib.rs b/src/lib.rs index eda2f31..b682ddc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -521,6 +521,12 @@ Now with explicit outputs: None } } + + fn for_each(&'a self, func: &dyn Fn(&MappedValue<'a>)) { + for i in self { + func( &MappedValue::Struct(i) ); + } + } } #[test] @@ -530,6 +536,14 @@ Now with explicit outputs: println!("{:?}", page.get_value(&"total_pages") ); + + if let Some(MappedValue::List(l)) = page.get_value(&"items") { + l.for_each(&|x: &MappedValue| { + if let MappedValue::Struct(s) = x { + println!(" - {:?}", s.get_value(&"title")); + } + }); + } Ok(()) } } -- cgit v1.2.3