В
map_while() в текущем виде. А про предложенный вариант, который не останавливается на первом NoneNone, в том-то и дело! Просто он не Fused вот и всёSize: a a a
В
map_while() в текущем виде. А про предложенный вариант, который не останавливается на первом NoneNone, в том-то и дело! Просто он не Fused вот и всёr
None, в том-то и дело! Просто он не Fused вот и всёmap_while как раз fused по смыслу. Но, похоже, для него забыли реализовать FusedIteratorAZ
map_while() в текущем виде. А про предложенный вариант, который не останавливается на первом Nonefn main() {
    let source = [Some(1), Some(2), None, None, Some(3)];
    let (nones, somes) = source.iter().enumerate().partition::<Vec<_>, _>(|&(idx, e)| e.is_none());
    println!("{:?}", nones);
    println!("{:?}", somes);
}В
map_while как раз fused по смыслу. Но, похоже, для него забыли реализовать FusedIteratormap_while не обязан быть fused. Он только должен возвращать None (и этим останавливаться), если predicate возвращает Noner
map_while не обязан быть fused. Он только должен возвращать None (и этим останавливаться), если predicate возвращает Nonemap_while или о том как map_while должен быть реализован?В
map_while или о том как map_while должен быть реализован?В
map_while должен быть реализованr
map_while я ожидаю, что результирующий итератор перестаёт вызывать .next() на итераторе, который он оборачивает, после того как предикат вернул None - по аналогии с take_while. Это влияет на семантику iter.by_ref().map_while(), например. Поэтому для итератора, который не прекращает вызывать .next() обёрнутого итератора нужно другое название. Например, and_thenAZ
map_while я ожидаю, что результирующий итератор перестаёт вызывать .next() на итераторе, который он оборачивает, после того как предикат вернул None - по аналогии с take_while. Это влияет на семантику iter.by_ref().map_while(), например. Поэтому для итератора, который не прекращает вызывать .next() обёрнутого итератора нужно другое название. Например, and_thenВ
while тут говорит что он вернёт None на None предиката и всё. Этого достаточно для 99% юзкейсов ибо практически всё останавливается на первом None: fold, цикл for, for_each, etcВ
AZ
while тут говорит что он вернёт None на None предиката и всё. Этого достаточно для 99% юзкейсов ибо практически всё останавливается на первом None: fold, цикл for, for_each, etcr
AZ
В
FusedIterator трейта.r
take_while и map_while - хуже, по-моему.AZ
take_while и map_while - хуже, по-моему.В
take_while и map_while - хуже, по-моему.FusedIterator)В
r
FusedIterator)