【问题标题】:Implementing traits without repeating methods already defined on the struct实现特征而不重复结构上已经定义的方法
【发布时间】:2018-12-10 20:43:55
【问题描述】:

我有一个特征,它只有一个要求,即方法 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 定义的新方法。然而,感觉没有必要像这样重复方法的定义,因为类型签名是相同的。有没有办法在我的 trait 实现中省略 len 的重新定义?

【问题讨论】:

    标签: struct rust traits


    【解决方案1】:

    有没有办法在我的 trait 实现中省略 len 的重新定义?

    不,这是不可能的。

    您也许可以编写某种宏来为您编写代码,但至少可以说,处理类型参数很烦人。

    另见:

    【讨论】:

    • 啊好的;谢谢您的回答。如果我需要更多地实现这个特性,我会考虑编写一个宏,但因为它只适用于LinkedList,所以我不会打扰。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 2017-05-07
    • 2021-01-01
    • 2017-01-04
    • 2016-03-30
    相关资源
    最近更新 更多