Skip to content

Iterator of const known length

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

usbalbin/iter_fixed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maintenance

crates.io docs.rs dependency status

Stable Nightly Miri

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 rust-lang/rust#80094 (comment)

Examples:

// simply reverse an Array
let rev_array: [_; 4] = [1, 3, 2, 7]
    .into_iter_fixed()
    .rev()
    .collect();
assert_eq!(rev_array, [7, 2, 3, 1]);

// .. and compute sum with values of a second array multiplied by 10
let sum_array: [_; 4] = rev_array
    .into_iter_fixed()
    .zip([4,1,3,7])
    .map(|(a, b)| a + (b * 10))
    .collect();
assert_eq!(sum_array, [47, 12, 33, 71]);

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.

About

Iterator of const known length

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages