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