Size: a a a

Rust — русскоговорящее сообществo

2020 April 07

Э

Эрик in Rust — русскоговорящее сообществo
iter::empty() возвращает Empty тип, а в первом бранче - vecdeque::IntoIter. Разные типы возвращать нельзя.
источник

f

folex in Rust — русскоговорящее сообществo
Эрик
iter::empty() возвращает Empty тип, а в первом бранче - vecdeque::IntoIter. Разные типы возвращать нельзя.
Да, верно. Но что делать-то?
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Можно возвращать Box<dyn Iterator>
источник

Э

Эрик in Rust — русскоговорящее сообществo
Делать Collection::new().iter() или боксить.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Есть вариант переписать код, не зацикливаясь на этой проблеме.
источник

f

folex in Rust — русскоговорящее сообществo
Еще можно во второй ветке делать итератор из пустого VecDeque
источник

f

folex in Rust — русскоговорящее сообществo
Эрик
Делать Collection::new().iter() или боксить.
А, ну вы как раз об этом.
источник

p

polunin.ai in Rust — русскоговорящее сообществo
А ещё можно возвращать Option<impl Iterator>🥴
источник

Э

Эрик in Rust — русскоговорящее сообществo
polunin.ai
А ещё можно возвращать Option<impl Iterator>🥴
Читер!
источник

f

folex in Rust — русскоговорящее сообществo
polunin.ai
А ещё можно возвращать Option<impl Iterator>🥴
А потом его расплющить 🤔
источник

f

folex in Rust — русскоговорящее сообществo
(if condition {
 Some(VecDeque::new::<V>().into_iter())
} else {
   None
}).into_iter().flatten()


И боксинга нету, и вроде ничего лишнего нигде не создается, да?
источник

Э

Эрик in Rust — русскоговорящее сообществo
Some(T) превращается в итератор?
источник

Э

Эрик in Rust — русскоговорящее сообществo
По-моему, это другой итератор.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Там есть такой фокус, что
impl<T> Iterator for Option<T> {
fn next() {
match self {
   Some(v) => Some(v),
   None => None,
 }
}
}

И ты делаешь не тот итератор.
источник

f

folex in Rust — русскоговорящее сообществo
ну мне всё равно какой там итератор, главное чтобы итератор :)
источник

Э

Эрик in Rust — русскоговорящее сообществo
А, стоп, flatten() же.
источник

Э

Эрик in Rust — русскоговорящее сообществo
Я даже не помню, что такая штука есть.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
folex
Да, верно. Но что делать-то?
взять either::Either
источник

Э

Эрик in Rust — русскоговорящее сообществo
Ты только помни, что for _ in _ на flatten итераторе - медленнее for_each().
источник

p

polunin.ai in Rust — русскоговорящее сообществo
Эрик
Ты только помни, что for _ in _ на flatten итераторе - медленнее for_each().
Преждевременные оптимизации?🤨
источник