簡體   English   中英

Rust - 創建過濾謂詞為 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM