gpt4 book ai didi

filter - 如何过滤 Vec 中的值并仍然返回 Vec?

转载 作者:行者123 更新时间:2023-11-29 08:27:00 29 4
gpt4 key购买 nike

<分区>

我有一个接受 &Vec<Word> 的函数(其中 Word 是本地定义的类型)并且应该返回 Vec<Word> (或 &Vec<Word> )。该函数的定义包括从参数中过滤值:

fn possibleWords(w1: &Word, words: &Vec<Word>) -> Vec<Word> {
words.into_iter().filter(|w| matches(w, w1)).collect::<Vec<Word>>()
}

但是,我收到以下错误消息:

error[E0277]: the trait bound `std::vec::Vec<[char; 10]>: std::iter::FromIterator<&[char; 10]>` is not satisfied

words.into_iter().filter(|w| matches(w, w1)).collect::<Vec<Word>>()
^^^^^^^ a collection of type `std::vec::Vec<[char; 10]>` cannot be built from an iterator over elements of type `&[char; 10]`

我不想返回切片,我真的想要一个 Vec .有没有办法不用手动构建 Vec从切片?

这是一个 MCVE:

type Word = [char; 10];

fn matches(w1: &Word, w2: &Word) -> bool {
true
}

fn possibleWords(w1: &Word, words: &Vec<Word>) -> Vec<Word> {
words.into_iter().filter(|w| matches(w, w1)).collect::<Vec<Word>>()
}


fn main() {
let w1 = ['D', 'E', 'C', 'O', 'U', 'V', 'E', 'R', 'T', 'E'];
let w2 = ['D', 'E', 'C', 'O', 'U', 'V', 'E', 'R', 'E', 'Z'];
let words = vec![w1, w2];
println!("{:?}", possibleWords(&w1, &words));
}

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com