Generics 如何在泛型上添加约束

Generics 如何在泛型上添加约束,generics,rust,Generics,Rust,我很难找到如何约束泛型类型。似乎K需要实现和特性。我在文档中找不到所需的语法 使用std::collections::HashMap; 结构Foo{ map:HashMap, } impl-Foo{ fn插入某物(&mut self,k:k,v:v){ 自映射插入(k,v); } } 编译器错误包括: error[E0599]:在当前作用域中找不到结构`std::collections::HashMap`的名为`insert`的方法 -->src/lib.rs:9:18 | 9 |自映射插入(

我很难找到如何约束泛型类型。似乎
K
需要实现和特性。我在文档中找不到所需的语法

使用std::collections::HashMap;
结构Foo{
map:HashMap,
}
impl-Foo{
fn插入某物(&mut self,k:k,v:v){
自映射插入(k,v);
}
}
编译器错误包括:

error[E0599]:在当前作用域中找不到结构`std::collections::HashMap`的名为`insert`的方法
-->src/lib.rs:9:18
|
9 |自映射插入(k,v);
|^std::collections::HashMap中找不到方法`
|
=注意:方法“insert”存在,但未满足以下特征界限:
`K:std::cmp::Eq`
`K:std::hash::hash`
//编辑注释,问题是旧的,因此来自编译器的错误消息已经提示了答案,但忽略它。

我在哪里可以在
K
上添加约束?

首先,您可以导入Hash特性,
使用std::Hash::Hash

可以在impl上添加约束:

impl Foo

或者,使用新的“where”语法

impl-Foo
哪里
K:Eq+Hash,
有关约束的更多上下文,请参阅