[英]Rust - create filter predicate as function
我想創建一個返回謂詞的 function。
我有一個向量,我想根據字符過濾特定字符。 我的代碼:
let n = 0; // Irrelevant. This will change
co2 = co2
.into_iter()
.filter(|&binary| binary.chars().collect::<Vec<char>>().get(n).unwrap() == &'1')
.collect();
我有幾個要匹配的字符。 我的意圖是像這樣創建一個 function:
fn create_predicate(character: char, n: usize) -> impl FnMut(&str) {
move |x: &str| {
return x.chars().collect::<Vec<char>>().get(n).unwrap() == &character;
}
}
co2 = co2.filter(create_predicate('q', n));
這行不通,但我想讓它看起來像那樣
所以我想要一個 function 來創建一個可以在我的過濾器中使用的謂詞。 我怎樣才能做到這一點?
如果沒有完整的最小可重現示例,很難給出完整的答案,但是您可以通過對代碼的兩個更改來接近:
filter
中使用謂詞,則它必須返回bool
。&&str
。工作示例:
fn create_predicate(character: char, n: usize) -> impl FnMut(&&str) -> bool {
move |x: &&str| {
return x.chars().collect::<Vec<char>>().get(n).unwrap() == &character;
}
}
fn main() {
let co2 = [ "azerty", "foo", "bar" ];
let co2 = co2.iter().copied().filter(create_predicate('q', 1));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.