#box #stack #dst

nightly no-std miny

Box<T> with small value optimization

3 stable releases

2.0.1 Jan 9, 2024
2.0.0 Jan 8, 2024
1.0.0 Jul 11, 2023

#1739 in Data structures

48 downloads per month

MIT/Apache

20KB
350 lines

miny

Repository Crates.io docs.rs MIT OR Apache-2.0

A Box<T> with T stored inline for values less than a pointer in size. Requires nightly Rust & alloc

use miny::Miny;
let small = Miny::new(1_u8);
let large = Miny::new([1_usize; 32]);
// small is stored inline on the stack
assert!(Miny::on_stack(&small));
// large is stored with an allocation
assert!(!Miny::on_stack(&large));
// consume the miny and get back a value
let original = Miny::into_inner(large);
assert_eq!(original, [1; 32]);

For more information, read the docs.

Changelog

2.0.1

  • Documentation upgrade

2.0.0

  • Redid the entire library to require qualified syntax, because I realized that that's probably a good idea

1.0.0

  • Initial release

License

MIT or Apache 2.0

(also hi please give me suggestions for more features to add, this crate feels kinda small)

No runtime deps