首页 > 解决方案 > 如何为嵌入在实现特征 A 或 B 的结构中的类型定义方法?

问题描述

我有两个特征和一个结构:

pub trait A {}

pub trait B {}

struct S<T> { a: T }

S<T>我只能在 T 实现 traitA和时定义一个方法B

impl<T: A + B> S<T> {
    pub fn do_something(&self) {
        println!("do_something");
    }
}

S<T>当 T 实现 traitA 时,如何定义方法B?我试图写两个impl,但它不起作用:

impl<T: A> S<T> {
    pub fn do_something_else(&self) {
        println!("do_something_else");
    }
}

impl<T: B> S<T> {
    pub fn do_something_else(&self) {
        println!("do_something_else");
    }
}

我收到了这个错误:

error[E0592]: duplicate definitions with name `do_something_else`
  --> src\main.rs:14:5
   |
14 |     pub fn do_something_else(&self) {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ duplicate definitions for `do_something_else`
...
20 |     pub fn do_something_else(&self) {
   |     ------------------------------- other definition for `do_something_else`

标签: rusttraits

解决方案


推荐阅读