11 releases
0.2.1 | Sep 9, 2024 |
---|---|
0.2.0 | Jul 12, 2024 |
0.1.8 | Jul 12, 2024 |
0.1.5 | May 6, 2024 |
#106 in No standard library
42 downloads per month
26KB
484 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.
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 Vec
s and Box
ed slices.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.