Mic*_*yin 5 generics types rust
我想使用默认类型创建通用结构。但是Rust编译器在创建结构时仍然需要我指定显式类型。
struct A {}
struct C<T = A> {
t: Option<T>
}
fn main() {
let c = C { t: None };
}
Run Code Online (Sandbox Code Playgroud)
Rust编译器显示此错误:
struct A {}
struct C<T = A> {
t: Option<T>
}
fn main() {
let c = C { t: None };
}
Run Code Online (Sandbox Code Playgroud)
如何允许我的代码用户忽略通用参数?
当您不在变量绑定中精确定义类型时(赋值的左侧),编译器必须进行推断。
在这里,该值不够精确(None可以是任何值)。
一种解决方案是在绑定中声明类型。您不必为赋予类型T,如果您只编写C,T则会应用的默认类型:
let c:C = C { t: None };
Run Code Online (Sandbox Code Playgroud)
值得商bat
请注意,在中c:C,根本没有类型推断:省略<_>或<SomeType>意味着将应用默认类型。