From 23a6ccf8fc6d1b54aabfde8a04289f8a27277b86 Mon Sep 17 00:00:00 2001 From: davidemazzocchi Date: Tue, 11 Nov 2025 14:32:31 +0100 Subject: [PATCH] feat: add catalog.for_each to inspect all items iteratively --- 01.workspace/heave/src/imp/catalog_for_each.rs | 16 ++++++++++++++++ 01.workspace/heave/src/imp/mod.rs | 1 + 2 files changed, 17 insertions(+) create mode 100644 01.workspace/heave/src/imp/catalog_for_each.rs diff --git a/01.workspace/heave/src/imp/catalog_for_each.rs b/01.workspace/heave/src/imp/catalog_for_each.rs new file mode 100644 index 0000000..61eea5e --- /dev/null +++ b/01.workspace/heave/src/imp/catalog_for_each.rs @@ -0,0 +1,16 @@ +use crate::*; + +impl Catalog { + pub fn for_each(&self, predicate: F) -> Result<(), FailedTo> + where + T: EAV, + F: Fn(&T) -> (), + { + self.with_items(|items| { + Ok(items + .values() + .flat_map(|entity| T::try_from(entity.clone()).map_err(|_| FailedTo::ConvertEntity)) + .for_each(|item| predicate(&item))) + }) + } +} diff --git a/01.workspace/heave/src/imp/mod.rs b/01.workspace/heave/src/imp/mod.rs index af8b38a..9c43247 100644 --- a/01.workspace/heave/src/imp/mod.rs +++ b/01.workspace/heave/src/imp/mod.rs @@ -1,6 +1,7 @@ pub mod bool_try_from_value; pub mod catalog_contains_key; pub mod catalog_delete; +pub mod catalog_for_each; pub mod catalog_get; pub mod catalog_get_by; pub mod catalog_init;