本文簡要介紹rust語言中 std::collections::hash_set::HashSet.drain_filter
的用法。
用法
pub fn drain_filter<F>(&mut self, pred: F) -> DrainFilter<'_, T, F> where F: FnMut(&T) -> bool,
創建一個迭代器,它使用閉包來確定是否應該刪除一個值。
如果閉包返回 true,則刪除並生成該值。如果閉包返回 false,則該值將保留在列表中並且不會由迭代器產生。
如果迭代器僅被部分消耗或根本不消耗,則剩餘的每個值仍將受到閉包的影響,如果它返回 true,則將其刪除並丟棄。
如果在閉包中發生Panics,或者在刪除值時發生Panics,或者如果DrainFilter
本身泄露,則未指定還有多少值將受到閉包。
例子
將集合拆分為偶數和奇數,重用原始集合:
#![feature(hash_drain_filter)]
use std::collections::HashSet;
let mut set: HashSet<i32> = (0..8).collect();
let drained: HashSet<i32> = set.drain_filter(|v| v % 2 == 0).collect();
let mut evens = drained.into_iter().collect::<Vec<_>>();
let mut odds = set.into_iter().collect::<Vec<_>>();
evens.sort();
odds.sort();
assert_eq!(evens, vec![0, 2, 4, 6]);
assert_eq!(odds, vec![1, 3, 5, 7]);
相關用法
- Rust HashSet.drain用法及代碼示例
- Rust HashSet.difference用法及代碼示例
- Rust HashSet.get_or_insert_with用法及代碼示例
- Rust HashSet.insert用法及代碼示例
- Rust HashSet.get_or_insert用法及代碼示例
- Rust HashSet.is_superset用法及代碼示例
- Rust HashSet.shrink_to用法及代碼示例
- Rust HashSet.with_hasher用法及代碼示例
- Rust HashSet.with_capacity用法及代碼示例
- Rust HashSet.try_reserve用法及代碼示例
- Rust HashSet.hasher用法及代碼示例
- Rust HashSet.get用法及代碼示例
- Rust HashSet.is_empty用法及代碼示例
- Rust HashSet.shrink_to_fit用法及代碼示例
- Rust HashSet.len用法及代碼示例
- Rust HashSet.new用法及代碼示例
- Rust HashSet.remove用法及代碼示例
- Rust HashSet.reserve用法及代碼示例
- Rust HashSet.with_capacity_and_hasher用法及代碼示例
- Rust HashSet.contains用法及代碼示例
- Rust HashSet.replace用法及代碼示例
- Rust HashSet.clear用法及代碼示例
- Rust HashSet.union用法及代碼示例
- Rust HashSet.is_subset用法及代碼示例
- Rust HashSet.take用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 std::collections::hash_set::HashSet.drain_filter。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。