Следующий код Rust компилируется и запускается без каких-либо проблем.
fn main() {
let text = "abc";
println!("{}", text.split(' ').take(2).count());
}
После этого я пробовал что-то вроде этого.... но он не компилировал
fn main() {
let text = "word1 word2 word3";
println!("{}", to_words(text).take(2).count());
}
fn to_words(text: &str) -> &Iterator<Item = &str> {
&(text.split(' '))
}
Основная проблема заключается в том, что я не уверен, какой тип возврата должен иметь функция to_words()
. Компилятор говорит:
error[E0599]: no method named `count` found for type `std::iter::Take<std::iter::Iterator<Item=&str>>` in the current scope
--> src/main.rs:3:43
|
3 | println!("{}", to_words(text).take(2).count());
| ^^^^^
|
= note: the method `count` exists but the following trait bounds were not satisfied:
`std::iter::Iterator<Item=&str> : std::marker::Sized`
`std::iter::Take<std::iter::Iterator<Item=&str>> : std::iter::Iterator`
Каким будет правильный код, чтобы этот запуск выполнялся?.... и где мой пробел в знаниях?