basic/basic.rs
1use std::fmt::Debug;
2
3use stack_box::{auto_box::AutoBox, coerce, FitContainer, FitStackBox};
4
5type U32Box<T> = FitStackBox!(T, [u32; 3]);
6
7fn main() {
8 let u16_box = U32Box::new(16u16); // ok
9 let u32_box = U32Box::new([32u32; 3]); // ok
10
11 // U32Box::new(0u64); // panic at compile time
12 // U32Box::new([0u32; 4]); // panic at compile time
13
14 assert!(U32Box::new_dynamic(0u64).is_err()); // align too large
15 assert!(U32Box::new_dynamic([0u32; 4]).is_err()); // size too large
16
17 let arr: [U32Box<dyn Debug>; 2] = [coerce!(u16_box), coerce!(u32_box)];
18
19 for x in arr {
20 dbg!(&*x);
21 }
22}