在不重复结构上已定义的方法的情况下实现特征
Implementing traits without repeating methods already defined on the struct
我有一个特征,它只有一个要求,即存在一种方法 len(&self) -> usize
。然后它为该结构提供了几个新方法的实现。
trait MyTrait {
fn len(&self) -> usize;
// ... some new functions with implementations
}
我想在 std::collections::LinkedList
上实现这个特性,它已经有一个具有该确切类型签名的方法。目前,我正在这样做:
impl<T> MyTrait for LinkedList<T> {
fn len(&self) -> usize {
self.len()
}
}
然后我可以在我的 LinkedList
实例上使用 MyTrait
定义的新方法。但是,感觉不必像这样重复定义方法,因为类型签名是相同的。有没有办法在我的特征实现中省略 len
的重新定义?
Is there a way to omit the re-definition of len
in my trait implementation?
不,不可能。
您也许可以编写某种宏来为您编写代码,但至少可以说,处理类型参数很烦人。
另请参阅:
我有一个特征,它只有一个要求,即存在一种方法 len(&self) -> usize
。然后它为该结构提供了几个新方法的实现。
trait MyTrait {
fn len(&self) -> usize;
// ... some new functions with implementations
}
我想在 std::collections::LinkedList
上实现这个特性,它已经有一个具有该确切类型签名的方法。目前,我正在这样做:
impl<T> MyTrait for LinkedList<T> {
fn len(&self) -> usize {
self.len()
}
}
然后我可以在我的 LinkedList
实例上使用 MyTrait
定义的新方法。但是,感觉不必像这样重复定义方法,因为类型签名是相同的。有没有办法在我的特征实现中省略 len
的重新定义?
Is there a way to omit the re-definition of
len
in my trait implementation?
不,不可能。
您也许可以编写某种宏来为您编写代码,但至少可以说,处理类型参数很烦人。
另请参阅: