1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use crate::{error::Error, mem::MaybeUninitUnsized, Emplacer, Flat};
pub trait FlatDefault: Flat {
type DefaultEmplacer: Emplacer<Self>;
fn default_emplacer() -> Self::DefaultEmplacer;
fn default_in_place(bytes: &mut MaybeUninitUnsized<Self>) -> Result<&mut Self, Error> {
Self::new_in_place(bytes, Self::default_emplacer())
}
}
impl<T: Flat + Default> FlatDefault for T {
type DefaultEmplacer = Self;
fn default_emplacer() -> Self::DefaultEmplacer {
Self::default()
}
}