Trait fallback::FallbackSpec
source · pub trait FallbackSpec: Sized {
type SpecType: From<Fallback<Self>>;
}
Expand description
This trait helps to create a new fallback type.
The code
#[derive(FallbackSpec)]
struct Foo {
data1: i32,
data2: String,
}
is the same as
struct Foo {
data1: i32,
data2: String,
}
struct FallbackFoo {
data1: Fallback<i32>,
data2: Fallback<String>,
}
impl FallbackSpec for Foo {
type SpecType = FallbackFoo;
}
impl From<Fallback<Foo>> for FallbackFoo {
fn from(data: Fallback<Foo>) -> Self {
let (data, base_data) = data.unzip();
let (data1, data2) = match data {
Some(data) => (Some(data.data1), Some(data.data2)),
None => (None, None),
};
let (base_data1, base_data2) = match base_data {
Some(data) => (Some(data.data1), Some(data.data2)),
None => (None, None),
};
Self {
data1: Fallback::new(data1, base_data1),
data2: Fallback::new(data2, base_data2),
}
}
}
Required Associated Types§
Object Safety§
This trait is not object safe.