使用由impl类型约束

时间:2017-07-03 18:46:10

标签: types syntax rust traits

我有一个通用结构:

pub struct Smth<T: Copy> {
    data: Vec<T>
}

如何实现参数p为项类型为T的迭代器的方法?

像这样的东西,但工作(看add_iter方法):)

impl<T: Copy> Smth<T> {
    fn new(data: Vec<T>) -> Self {
        Smth { data }
    }

    fn add(&mut self, item: T) {
        self.data.push(item);
    }

    fn add_iter<I: Iterator>(&mut self, iter: I)
        where I::Item: T  // <-- Here is the problem
    {
        for item in iter {
           self.add(item);
        }
    }
}

我也试过了where I::Item: Copy,但这也行不通。

0 个答案:

没有答案