В
map_while()
в текущем виде. А про предложенный вариант, который не останавливается на первом None
None
, в том-то и дело! Просто он не Fused
вот и всёSize: a a a
В
map_while()
в текущем виде. А про предложенный вариант, который не останавливается на первом None
None
, в том-то и дело! Просто он не Fused
вот и всёr
None
, в том-то и дело! Просто он не Fused
вот и всёmap_while
как раз fused
по смыслу. Но, похоже, для него забыли реализовать FusedIterator
AZ
map_while()
в текущем виде. А про предложенный вариант, который не останавливается на первом None
fn 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
по смыслу. Но, похоже, для него забыли реализовать FusedIterator
map_while
не обязан быть fused
. Он только должен возвращать None
(и этим останавливаться), если predicate
возвращает None
r
map_while
не обязан быть fused
. Он только должен возвращать None
(и этим останавливаться), если predicate
возвращает None
map_while
или о том как map_while
должен быть реализован?В
map_while
или о том как map_while
должен быть реализован?В
map_while
должен быть реализованr
map_while
я ожидаю, что результирующий итератор перестаёт вызывать .next()
на итераторе, который он оборачивает, после того как предикат вернул None
- по аналогии с take_while
. Это влияет на семантику iter.by_ref().map_while()
, например. Поэтому для итератора, который не прекращает вызывать .next()
обёрнутого итератора нужно другое название. Например, and_then
AZ
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
)