我尝试用下面的方法过滤&[&str]
类型的数组,以排除““的情况:
let example_array : &[&str] = &["hello", " ", "world"];
let filtered_array : &[&str] = example_array.iter().copied().filter(|&word| word != " ").collect();
我得到的错误是:
&[&str]
类型的值不能从std::iter::Iterator<Item=&str>
构建
有人能解释一下为什么不工作,在哪里寻找解决方案?
1条答案
按热度按时间jvlzgdj91#
&[&str]
是对字符串引用的切片(数组)的引用。这适用于字符串的静态数组,因为编译器能够将其放入静态数据部分并创建对它的引用。collect
函数不能返回&[&str]
,但可以返回动态分配的Vec<&str>
编辑:
Vec<&str>
实现了Deref<Target = [&str]>
,这意味着您可以通过引用Vec<&str>
将其用作&[&str]
。