pub trait TestTrait {
fn test() {}
}
#[derive(Default)]
pub struct OtherStruct;
impl TestTrait for OtherStruct {}
#[derive(Default, Debug)]
pub struct StructTest {
a: u32,
b: u32,
c: Vec<u32>,
}
impl TestTrait for StructTest {}
#[derive(Default, Debug)]
pub struct ZZ<T: TestTrait = StructTest> {
e: T,
}
comfuse about "T: TestTrait = StructTest",why not just "T:impl TestTrait"?
i can put any type that impl TestTrait into T,there is no error with compile.
but when T is StructTest,the type is ZZ,if not,wiil be like ZZ< Type >.
like this:
pub fn main{
let z:ZZ = ZZ {
e: StructTest::default(),
};
let z:ZZ<OtherStruct> = ZZ {
e: StructTest::default(),
};
}
the different is:ZZ vs ZZ< OtherStruct >.
i do not understand why "T: TestTrait = StructTest"?
thanks for help!