Expand description
A library for rust to provide ways to emplace dynamic sized type
#![feature(alloc_layout_extra)]
#![feature(ptr_metadata)]
use dst_init_macros::dst;
use dst_init::{BoxExt, Slice, SliceExt};
#[dst]
#[derive(Debug)]
struct Test<A, B, C, D> {
a: A,
b: B,
c: C,
dst: [(C, D)],
}
#[dst]
#[derive(Debug)]
struct Test1<A, B, C, D> {
a: usize,
t: Test<A, B, C, D>,
}
let t = TestInit {
a: 1usize,
b: 1u8,
c: 1u8,
dst: Slice::iter_init(3, (0..).map(|i| (i as u8, i as usize))),
};
let u = Test1Init { a: 1usize, t };
let a = Box::emplace(u);
assert_eq!(a.a,1usize);
assert_eq!(a.t.a,1);
assert_eq!(a.t.b,1);
assert_eq!(a.t.c,1);
assert_eq!(a.t.dst,[(0,0),(1,1),(2,2)]);
Re-exports§
pub use dst_init_macros as macros;
Modules§
Structs§
- Coercion
Initializer - An Emplace Initializer for
dyn
or[T]
types, created by concrete typeT
or[T;N]
. For exampleusize
is sized type and implementedDebug
: - Direct
Initializer - An Emplace Initializer for sized type, created by itself.
- RawInitializer
- Slice
FnInitializer - An Emplace Initializer for Slice, created by closure and member number.
- Slice
Iter Initializer - An Emplace Initializer for Slice, created by iterator and member number.
Traits§
- BoxExt
- Abstract for type
Box
,Rc
and etc to allocate value by EmplaceInitializer types. - Emplace
Initializer - An abstract interface for all emplace initializer
- Initializer
- Slice
Ext - Extension for type
[T]
to create EmplaceInitializer.
Type Aliases§
Attribute Macros§
- dst
- Usage: