PartialThis
Type-safe partial construction
- Multi partial overloads.
let foo: = partial.done; let foo: Foo = partial.done; let mut foo = uninit; let foo: &mut Foo = partial.done; - Field initialization methods. Can be called in any order and at most once.
// ok let p = p.foo; let p = p.bar;// ok let p = p.bar; let p = p.foo;let p = p.foo; let p = p.foo; // error - Field access methods. Can be called after initialization.
let p = p.foo; println!;let mut p = p.foo; *p.foo_mut = 123; - Done method.Can be called after all fields are initialized.
let foo = p.done; - Drop safe. Will call fields
dropaccording to the field initialization status and fields declare order.let p = Somepartial; let p = p.field0; let p = p.field1; drop; // drop(field1) -> drop(field0) -> drop(Box<MaybeUninit<Some>>)