代码之家  ›  专栏  ›  技术社区  ›  Aaron Christiansen

在不重复已在结构上定义的方法的情况下实现traits

  •  1
  • Aaron Christiansen  · 技术社区  · 7 年前

    我有一个特点,只有一个要求,那就是有一种方法 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()
        }
    }
    

    然后,我可以使用 MyTrait 在我的 LinkedList 实例。但是,由于类型签名是相同的,因此感觉没有必要像这样重复方法的定义。有没有办法不重新定义 len

    1 回复  |  直到 7 年前
        1
  •  5
  •   Shepmaster Tim Diekmann    7 年前

    有没有办法不重新定义 len 在我的特质实现中?

    不,这是不可能的。

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

    另见:

    推荐文章