Size: a a a

2020 December 05

r

red75prime in Rust Beginners
Nik Bond
Есть немножко вопросов:
А может быть такой итератор, который возвращает какой-то элемент после того как вернул None?
Поскольку имплементация некоторого итератора полностью на совести автора, такое может произойти и трейт Iterator никак это не ограничивает, верно?
Если итератор так делает, то это ошибка и его нужно переписать, верно?
И последнее: Нужно ли, по хорошему, запоминать в итераторе что-то типа is_finished, чтобы сразу возвращать None и не запускать основную логику, которая в итоге все ранво вернет None?
next() Returns None when iteration is finished. Individual iterator implementations may choose to resume iteration, and so calling next() again may or may not eventually start returning Some(Item) again at some point.
источник

P

Paper_doll_96 in Rust Beginners
antuan
Some(None)? :)
Тут ошибка, пушто компилятор не выведет тип для Option
источник

r

red75prime in Rust Beginners
Итераторы, которые гарантируют, что никогда не вернут Some после None могут продемонстрировать это реализацией std::iter::FusedIterator
источник

NB

Nik Bond in Rust Beginners
antuan
Some(None)? :)
Нет) Ну допустим я такой итератор напишу для иллюстрации вопроса, компилятор же мне по рукам не надает
fn next(&mut self) -> Option<u64> {
    if self.flag {
         self.flag = !self.flag;
         Some(42)
    } else {
         self.flag = !self.flag;
         None
    }
}
источник

NB

Nik Bond in Rust Beginners
red75prime
next() Returns None when iteration is finished. Individual iterator implementations may choose to resume iteration, and so calling next() again may or may not eventually start returning Some(Item) again at some point.
Спасибо!
Странно это, конечно, с точки зрения логики
источник

P

Paper_doll_96 in Rust Beginners
Nik Bond
Нет) Ну допустим я такой итератор напишу для иллюстрации вопроса, компилятор же мне по рукам не надает
fn next(&mut self) -> Option<u64> {
    if self.flag {
         self.flag = !self.flag;
         Some(42)
    } else {
         self.flag = !self.flag;
         None
    }
}
Так ведь Some(None) это Option<Option<T>>
источник

NB

Nik Bond in Rust Beginners
Paper_doll_96
Так ведь Some(None) это Option<Option<T>>
Я не спорю. Я не понял к чему это?)
источник

P

Paper_doll_96 in Rust Beginners
Nik Bond
Я не спорю. Я не понял к чему это?)
Оййй, показалось, предыдущий чел написал, сори)
источник

AK

Aleksandr Koltovich in Rust Beginners
Всем привет!
Что-то после TypeScript сложновато...
Есть 3 структуры. У каждой из них есть поле childs. В нем может находиться одна из 3х структур.
На TypeScript я бы написал что-то вроде:
let type Child = Struct1 | Struct2 | Struct 3
Как на Rust подобные вещи решать? Где искать правду? )

Пробовал через enum. Завел в него названия структур. Но не сработало.
источник

НТ

Никита Тыманович... in Rust Beginners
пробовал через дженереки?
источник

AK

Aleksandr Koltovich in Rust Beginners
Переслано от вафель 🧇
enum Child {
   A(Struct1),
   B(Struct2),
   C(Struct3),
}
источник

AK

Aleksandr Koltovich in Rust Beginners
Подсказали в другом чатике. Вдруг кому пригодится.
источник

JM

John Meow in Rust Beginners
Aleksandr Koltovich
Подсказали в другом чатике. Вдруг кому пригодится.
Почему бы просто не прочитать книгу?
источник

AK

Aleksandr Koltovich in Rust Beginners
John Meow
Почему бы просто не прочитать книгу?
Почему бы не умничать и быть менее токсичным?
источник

AK

Aleksandr Koltovich in Rust Beginners
Книжку я прочитал. Повторно поискал в ней ответы. И только через битый час полез в чат за помощью.
источник

AK

Aleksandr Koltovich in Rust Beginners
Как искать ответы на вопросы меня учить не надо. Спасибо за внимание.
источник

JM

John Meow in Rust Beginners
Aleksandr Koltovich
Книжку я прочитал. Повторно поискал в ней ответы. И только через битый час полез в чат за помощью.
Насколько я помню, там вся нужная информация была
источник

AK

Aleksandr Koltovich in Rust Beginners
John Meow
Насколько я помню, там вся нужная информация была
Возможно, я не так искал или не туда смотрел.
Так и до посинения можно в книжке искать ответы.
Куда проще спросить у людей, если лимит самостоятельного поиска исчерпан.
источник

НТ

Никита Тыманович... in Rust Beginners
Aleksandr Koltovich
Почему бы не умничать и быть менее токсичным?
не думаю, что он хотел быть токсичным) Просто там есть хорошоо описан код, который можно было применить к твоей ситуации) https://doc.rust-lang.ru/book/ch10-01-syntax.html
источник

d

diabolo in Rust Beginners
John Meow
Насколько я помню, там вся нужная информация была
возможно человек не имел раньше дела с тип-суммами, отсюда и не увидел в доке.
я думал я тут самый законченный токсик)
источник