实现切片的子特征

时间:2016-06-24 14:12:18

标签: generics rust slice traits

是否可以在Rust中实现切片的std::ops::Sub特性?如果是这样,我该怎么做?

我尝试了以下内容:

use std::ops::Sub;

impl <'a, 'b, T> Sub<&'a [T]> for &'b [T] {
    type Output = Vec<T>;
    fn sub(self, rhs: &[T]) -> Vec<T> {
        difference(self, rhs)
    }
}

difference签名:

difference<T: PartialEq + Copy>(xs: &[T], ys: &[T]) -> Vec<T>

编译它会导致以下错误消息:

error: type parameter `T` must be used as the type parameter for some local type 
    (e.g. `MyStruct<T>`); only traits defined in the current crate 
    can be implemented for a type parameter [E0210]
impl <'a, 'b, T> Sub<&'a [T]> for &'b [T] {
^

然后运行rust --explain E0210以获取更多信息我可以理解这个问题,但是我对使用详细解释中描述的struct MyType<T>(T);解决方法时语法的样子感到困惑。

与找到的问题不同How do I implement a trait I don't own for a type I don't own?我的问题是我不希望这对于矢量类型,但对于语法似乎不同的切片类型,这个答案实际上并没有用。

0 个答案:

没有答案