本文簡要介紹rust語言中 alloc::collections::linked_list::LinkedList.drain_filter
的用法。
用法
pub fn drain_filter<F>(&mut self, filter: F) -> DrainFilter<'_, T, F> where F: FnMut(&mut T) -> bool,
創建一個迭代器,它使用閉包來確定是否應刪除元素。
如果閉包返回 true,則元素被移除並生成。如果閉包返回 false,則元素將保留在列表中,並且不會被迭代器產生。
請注意,drain_filter
允許您改變過濾器閉包中的每個元素,無論您選擇保留還是刪除它。
例子
將列表拆分為偶數和賠率,重用原始列表:
#![feature(drain_filter)]
use std::collections::LinkedList;
let mut numbers: LinkedList<u32> = LinkedList::new();
numbers.extend(&[1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]);
let evens = numbers.drain_filter(|x| *x % 2 == 0).collect::<LinkedList<_>>();
let odds = numbers;
assert_eq!(evens.into_iter().collect::<Vec<_>>(), vec![2, 4, 6, 8, 14]);
assert_eq!(odds.into_iter().collect::<Vec<_>>(), vec![1, 3, 5, 9, 11, 13, 15]);
相關用法
- Rust LinkedList.push_front用法及代碼示例
- Rust LinkedList.remove用法及代碼示例
- Rust LinkedList.front用法及代碼示例
- Rust LinkedList.is_empty用法及代碼示例
- Rust LinkedList.back_mut用法及代碼示例
- Rust LinkedList.pop_front用法及代碼示例
- Rust LinkedList.new用法及代碼示例
- Rust LinkedList.clear用法及代碼示例
- Rust LinkedList.iter_mut用法及代碼示例
- Rust LinkedList.back用法及代碼示例
- Rust LinkedList.front_mut用法及代碼示例
- Rust LinkedList.iter用法及代碼示例
- Rust LinkedList.split_off用法及代碼示例
- Rust LinkedList.contains用法及代碼示例
- Rust LinkedList.len用法及代碼示例
- Rust LinkedList.append用法及代碼示例
- Rust LinkedList.push_back用法及代碼示例
- Rust LinkedList.pop_back用法及代碼示例
- Rust LinkedList用法及代碼示例
- Rust LineWriter.new用法及代碼示例
- Rust LineWriter用法及代碼示例
- Rust LineWriter.with_capacity用法及代碼示例
- Rust LineWriter.get_mut用法及代碼示例
- Rust LineWriter.get_ref用法及代碼示例
- Rust LineWriter.into_inner用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 alloc::collections::linked_list::LinkedList.drain_filter。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。