summaryrefslogtreecommitdiffstats
path: root/vendor/toml_edit/src/inline_table.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/toml_edit/src/inline_table.rs')
-rw-r--r--vendor/toml_edit/src/inline_table.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/vendor/toml_edit/src/inline_table.rs b/vendor/toml_edit/src/inline_table.rs
index 9327818e6..3dc6c0c05 100644
--- a/vendor/toml_edit/src/inline_table.rs
+++ b/vendor/toml_edit/src/inline_table.rs
@@ -363,6 +363,24 @@ impl InlineTable {
kv.value.into_value().ok().map(|value| (key, value))
})
}
+
+ /// Retains only the elements specified by the `keep` predicate.
+ ///
+ /// In other words, remove all pairs `(key, value)` for which
+ /// `keep(&key, &mut value)` returns `false`.
+ ///
+ /// The elements are visited in iteration order.
+ pub fn retain<F>(&mut self, mut keep: F)
+ where
+ F: FnMut(&str, &mut Value) -> bool,
+ {
+ self.items.retain(|key, item| {
+ item.value
+ .as_value_mut()
+ .map(|value| keep(key, value))
+ .unwrap_or(false)
+ });
+ }
}
impl std::fmt::Display for InlineTable {