我希望有一个结构,它有一个泛型参数,用作HashMap
的键类型,它是一个成员变量。我还希望我的struct实现Default
并将HashMap
默认为空。但这不编译:
use std::hash::Hash;
use std::collections::HashMap;
#[derive(Default)]
struct X<T: Hash + Eq> {
x: HashMap<T, String>
}
impl<T: Hash + Eq> X<T> {
fn new() -> X<T> {
Default::default()
}
}
fn main() {
}
它说:
error[E0277]: the trait bound `T: std::default::Default` is not satisfied
--> src/main.rs:11:9
|
11 | Default::default()
| ^^^^^^^^^^^^^^^^ the trait `std::default::Default` is not implemented for `T`
|
= help: consider adding a `where T: std::default::Default` bound
= note: required because of the requirements on the impl of `std::default::Default` for `X<T>`
= note: required by `std::default::Default::default`
为什么这不起作用?