是否可以在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?我的问题是我不希望这对于矢量类型,但对于语法似乎不同的切片类型,这个答案实际上并没有用。