Skip to content

If you want to return a buffer of unknown size (but smaller than some limit) from/in a const context. Defines a type backed by an array where only a section of the array may be viewed (as the other parts of the array may not uphold some invariant).

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

JSorngard/array-section

Repository files navigation

array-section

Crates.io Version docs.rs Static Badge GitHub Actions Workflow Status

When you want to return a buffer of unknown size (but smaller than some limit) from/in a const context. This crate defines a type backed by an array where only a (contiguous) subsection of the array may be viewed.

This can be useful in const functions that wish to return an array of size N, but with some elements potentially unused.

The crate is no_std compatible.

/// Returns an array of the square numbers smaller than both x and N.
const fn squares_smaller_than<const N: usize>(x: usize) -> ArraySection<usize, N> {
   let mut i = 0;
   let mut ans = [0; N];
   while i * i < N && i * i < x {
       ans[i] = i * i;
       i += 1;
   }
   ArraySection::new(ans, 0..i)
}
assert_eq!(squares_smaller_than::<10>(16), [0, 1, 4, 9]);

Feature flags

std: lets the error type provide a Backtrace. When this feature is disabled the crate is no_std compatible. Enables the alloc feature.

alloc: enables conversion of the array section into Vecs and Boxed slices.


License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

If you want to return a buffer of unknown size (but smaller than some limit) from/in a const context. Defines a type backed by an array where only a section of the array may be viewed (as the other parts of the array may not uphold some invariant).

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Languages