From 84661ccab21cf3a8d62c6c4cf6659999fae5e66b Mon Sep 17 00:00:00 2001 From: Josh Leeb-du Toit Date: Wed, 22 Nov 2023 21:27:38 +1100 Subject: [PATCH] Add Context::keys to iterate over Context data keys --- src/context.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/context.rs b/src/context.rs index 5a874ca4..19218966 100644 --- a/src/context.rs +++ b/src/context.rs @@ -123,6 +123,11 @@ impl Context { self.data.remove(index) } + /// Returns an iterator over the keys of the `Context`, in sorted order. + pub fn keys(&self) -> impl Iterator { + self.data.keys().map(|k| k.as_ref()) + } + /// Checks if a value exists at a specific index. pub fn contains_key(&self, index: &str) -> bool { self.data.contains_key(index) @@ -509,4 +514,14 @@ mod tests { let mut context = Context::new(); assert_eq!(context.remove("unknown"), None); } + + #[test] + fn can_iterate_over_keys() { + let mut context = Context::new(); + context.insert("b", "b"); + context.insert("a", "a"); + + let keys: Vec<_> = context.keys().collect(); + assert_eq!(keys, ["a", "b"]); + } }