pub struct StackBox<T, Ctnr>where
T: ?Sized,{ /* private fields */ }Implementations§
Source§impl<T, Ctnr> StackBox<T, Ctnr>where
Ctnr: StackBoxContainer,
impl<T, Ctnr> StackBox<T, Ctnr>where
Ctnr: StackBoxContainer,
Sourcepub fn new(value: T) -> Self
pub fn new(value: T) -> Self
Statically check if value could be put into this box. If checking is failed then trigger error at compile time.
Examples found in repository?
More examples
examples/basic.rs (line 8)
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}Sourcepub fn new_dynamic(value: T) -> Result<Self, (T, Error)>
pub fn new_dynamic(value: T) -> Result<Self, (T, Error)>
Examples found in repository?
examples/basic.rs (line 14)
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}pub fn coerce_unsized<U, F>(this: Self, check_fn: F) -> StackBox<U, Ctnr>
Trait Implementations§
Source§impl<T, Ctnr> BorrowMut<T> for StackBox<T, Ctnr>where
T: ?Sized,
impl<T, Ctnr> BorrowMut<T> for StackBox<T, Ctnr>where
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, Ctnr> Ord for StackBox<T, Ctnr>
impl<T, Ctnr> Ord for StackBox<T, Ctnr>
Source§impl<T, U, Ctnr, Ctnr2> PartialOrd<StackBox<U, Ctnr2>> for StackBox<T, Ctnr>
impl<T, U, Ctnr, Ctnr2> PartialOrd<StackBox<U, Ctnr2>> for StackBox<T, Ctnr>
impl<T, Ctnr> Eq for StackBox<T, Ctnr>
impl<T, Ctnr> Send for StackBox<T, Ctnr>
impl<T, Ctnr> Sync for StackBox<T, Ctnr>
Auto Trait Implementations§
impl<T, Ctnr> !Freeze for StackBox<T, Ctnr>
impl<T, Ctnr> !RefUnwindSafe for StackBox<T, Ctnr>
impl<T, Ctnr> Unpin for StackBox<T, Ctnr>
impl<T, Ctnr> UnwindSafe for StackBox<T, Ctnr>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more