在密钥类型未知时构造默认HashMap

时间:2017-10-31 20:09:07

标签: rust

我希望有一个结构,它有一个泛型参数,用作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`

为什么这不起作用?

0 个答案:

没有答案