我越来越熟悉 Rust 泛型,但我不知道出了什么问题。
use std::collections::BTreeMap;
fn frequency<T: Ord + Clone>(vec: &Vec<T>) -> BTreeMap<T, u32> {
let mut movie_reviews = BTreeMap::new();
let mut vec_ = Vec::new();
vec.push(1);
movie_reviews
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它需要 type T:
use std::collections::BTreeMap;
fn frequency<T: Ord + Clone>(vec: &Vec<T>) -> BTreeMap<T, u32> {
let mut movie_reviews = BTreeMap::new();
let mut vec_ = Vec::new();
vec.push(1);
movie_reviews
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它需要类型
T
它期望一个类型的值,T因为您正试图将一个值推入Vec<T>.
问题是您提供给编译器的唯一信息T是它是Ord + Clone- 但这些特征都没有说它1是 的值T。One在numcrate 中有一个 trait ,它提供了这个:
extern crate num; // 0.2.0
use num::One;
use std::collections::BTreeMap;
fn frequency<T>(vec: &mut Vec<T>) -> BTreeMap<T, u32>
where
T: Ord + Clone + One,
{
let mut movie_reviews = BTreeMap::new();
vec.push(T::one());
movie_reviews
}
Run Code Online (Sandbox Code Playgroud)
正如其他人评论的那样,您的代码还有一两个其他问题,我不会在这里解决这些问题,因为这将解决您所询问的错误。
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |