iter_fixed
                                
                                 iter_fixed copied to clipboard
                                
                                    iter_fixed copied to clipboard
                            
                            
                            
                        Iterator of const known length
iter_fixed
This project is inspired by @leonardo-m 's idea https://github.com/rust-lang/rust/issues/80094#issuecomment-749260428
**This code is currently very experimental, type names, function names, trait bounds etc. are all very much subject to change.
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.
Just like Iterator, IteratorFixed provides methods like:
Works on stable rust
Requires nightly compiler
however it does not and will never be able to support methods like filter or take_while which will affect the length during runtime.
no_std
This crate should work without the full standard library
Examples
Toy example
// zip together two arrays of length 4, turn the elements wise sums of the
// two middle elements into an array of size 2
let res: [_; 2] = [1, 2, 3, 4]
    .into_iter_fixed()
    .zip([4, 3, 2, 1])
    .map(|(a, b)| a + b)
    .skip::<1>()
    .take::<2>()
    .collect();
assert_eq!(res, [5, 5]);
Vector
Matrix
License
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.