#array #const #no-alloc #subarray

no-std array-section

An array where only a (contiguous) subarray may be viewed or operated on

6 releases

new 0.1.5 May 6, 2024
0.1.4 May 6, 2024

#85 in No standard library

Download history 654/week @ 2024-05-04

654 downloads per month

MIT/Apache

19KB
362 lines

array-section

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.

#![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]);

Features

std: derives the Error trait for the error types.
alloc: enables conversion of the array section into Vecs and Boxed slices.

License

Licensed under either of

at your option.

Contribution

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.

No runtime deps

Features