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}