Vec<&'static str>;
fn words_with_len(words: &WordsStoragePlain, len: usize) -> impl Iterator<Item = &'static str> {
words.iter().filter(|w| w.len() == len)
}
В ответ получаю ошибку:
error[E0271]: type mismatch resolving `<Filter<std::slice::Iter<'_, &str>, [closure@src\kata8_object
ives.rs:4:25: 4:28]> as Iterator>::Item == &'static str`
--> src\kata8_objectives.rs:3:61
|
3 | fn words_with_len(words: &WordsStoragePlain, len: usize) -> impl Iterator<Item = &'static str> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ e
xpected `&str`, found `str`
|
= note: expected reference `&&str`
found reference `&'static str`
Что делаю не так?
Так? https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d38578eb274fa81f606161ce603baa95
Спасибо, работает. Но меня смущает связка copyed() + move. Не будет ли это лишняя работа? И зачем она нужна, я же реально не собираюсь ничего изменять, мне чисто на чтение (т.е. просто &) надо.
Обсуждают сегодня