summaryrefslogtreecommitdiffstats
path: root/vendor/toml_edit/src/table.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/toml_edit/src/table.rs')
-rw-r--r--vendor/toml_edit/src/table.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/vendor/toml_edit/src/table.rs b/vendor/toml_edit/src/table.rs
index 2f61abf73..45d6d61b6 100644
--- a/vendor/toml_edit/src/table.rs
+++ b/vendor/toml_edit/src/table.rs
@@ -397,6 +397,20 @@ impl Table {
pub fn remove_entry(&mut self, key: &str) -> Option<(Key, Item)> {
self.items.shift_remove(key).map(|kv| (kv.key, kv.value))
}
+
+ /// Retains only the elements specified by the `keep` predicate.
+ ///
+ /// In other words, remove all pairs `(key, item)` for which
+ /// `keep(&key, &mut item)` returns `false`.
+ ///
+ /// The elements are visited in iteration order.
+ pub fn retain<F>(&mut self, mut keep: F)
+ where
+ F: FnMut(&str, &mut Item) -> bool,
+ {
+ self.items
+ .retain(|key, key_value| keep(key, &mut key_value.value));
+ }
}
impl std::fmt::Display for Table {