5 rust
我想获得一段我已经拆分的字符串:
fn fn1(my_string: String) -> bool {
let mut segments = my_string.split(".");
segments.collect().len() == 55
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
error[E0619]: the type of this value must be known in this context
--> src/main.rs:3:5
|
3 | segments.collect().len() == 55
| ^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
在迭代器上,该collect
方法可以生成许多类型的集合:
fn collect<B>(self) -> B
where
B: FromIterator<Self::Item>,
Run Code Online (Sandbox Code Playgroud)
实现类型FromIterator
包括Vec
,String
和更多.因为有很多可能性,所以需要约束结果类型.您可以使用.collect::<Vec<_>>()
或等指定类型let something: Vec<_> = some_iter.collect()
.
在类型已知之前,您无法调用该方法,len()
因为无法知道未知类型是否具有特定方法.
如果你纯粹想要找出迭代器中有多少项,请使用Iterator.count()
; 为此目的创建向量是相当低效的.