Пытаюсь на расте написать аналог такого:
def print_items(items):
for item in items:
print item
Это же просто, да?
Растишкин код:
// так работает
fn print_items(items: &[&str]) {
for item in items {
println!("{}", item);
}
}
// а так не работает, блджад!
fn print_items_iter<'a, I> (items: I)
where I: IntoIterator<Item = &'a str>
{
for item in items {
println!("{}", item);
}
}
fn main() {
let items = ["pracuj", "kurwo"];
print_items(&items);
print_items_iter(&items);
}
Не компилится:
src/main.rs:21:5: 21:21 error: type mismatch resolving `<&[&str; 2] as core::iter::IntoIterator>::Item == &str`:
expected &-ptr,
found str [E0271]
src/main.rs:21 print_items_iter(&items);
^~~~~~~~~~~~~~~~
src/main.rs:21:5: 21:21 help: run `rustc --explain E0271` to see a detailed explanation
src/main.rs:21:5: 21:21 note: required by `print_items_iter`
Штоааа? В доке же написано, что слайсы реализуют IntoIterator. Чего он от меня хочет? Алсо, &[&str; 2]
- это таки слайс или ссылка на массив? Почему? Я уже совсем ничего нипа
Растишка: формула здорового росту.