iter_fixed
Provides a type and traits for turning collections of fixed size, like arrays,
into [IteratorFixed
] which can be used a bit like an ordinary [Iterator
] but
with a compile time guaranteed length. This enables us to turn them back into
collections of fixed size without having to perform unnecessary checks during
run time.
[IteratorFixed
] provides on stable methods like map
, inspect
, enumerate
,
zip
, rev
, copied
, cloned
, with nightly skip
, step_by
, chain
, take
,
flatten
.
However it does not and will never be able to support methods like
filter
or take_while
which will affect the length during runtime.
⚠️ Experimental
This code is currently very experimental, type names, function names, trait bounds etc. are all very much subject to change.
Origin
This project is inspired by @leonardo-m 's idea https://github.com/rust-lang/rust/issues/80094#issuecomment-749260428
Examples:
// simply reverse an Array
let rev_array: =
.into_iter_fixed
.rev
.collect;
assert_eq!;
// .. and compute sum with values of a second array multiplied by 10
let sum_array: = rev_array
.into_iter_fixed
.zip
.map
.collect;
assert_eq!;
You can also take a look at examples : matrix.rs
and vector.rs
Current version: 0.4.0
no_std
This crate should work without the full standard library
Some additional info here
License : MIT OR Apache-2.0
iter_fixed
is distributed under the terms of both the MIT license and
the Apache License (Version 2.0).
See LICENSE-APACHE, and LICENSE-MIT for details.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in iter_fixed by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.