2
는 Default
을 유도 다음과 같은 구조체 Foo<T>
감안할 때 : Default의 일반적인 구현에서 가능한 버그?
#[derive(Default)]
struct Foo<T> {
bar: Option<T>,
}
왜이
fn create<T>() -> Foo<T> {
Foo {
bar: Option::default(),
}
}
을 컴파일 않습니다를하지만 그렇지 않습니다? 내 마음에
fn create_alt<T>() -> Foo<T> {
Foo::default()
}
그들은 모두 똑같은 일을하고있다 - T
가 Option<T>
가 Default
를 구현하기 때문에 (컴파일러 나 지정할 원하는 것을입니다) Default
를 구현하는 경우는 문제가 안된다.
Here은이 예가있는 녹 놀이터에 대한 링크입니다.
이 작업은'Debug','Default','Clone', 그리고 아마도 더 많은 것들을 포함하여 자동으로 파생 될 수있는 몇 가지 특성들에 대해 발생합니다. 파생 된 구현에서는 모든 유형 매개 변수가이를 구현해야합니다. –