相关疑难解决方法(0)

我为另一个特征实现了一个特征,但不能从两个特征中调用方法

我有一个特点叫Sleep:

pub trait Sleep {
    fn sleep(&self);
}
Run Code Online (Sandbox Code Playgroud)

我可以Bed为每个结构提供不同的实现,但事实证明大多数人以很少的方式睡觉.你可以睡在床上:

pub trait HasBed {
    fn sleep_in_bed(&self);
    fn jump_on_bed(&self);
}

impl Sleep for HasBed {
    fn sleep(&self) {
        self.sleep_in_bed()
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你露营,你可以睡在帐篷里:

pub trait HasTent {
    fn sleep_in_tent(&self);
    fn hide_in_tent(&self);
}

impl Sleep for HasTent {
    fn sleep(&self) {
        self.sleep_in_tent()
    }
}
Run Code Online (Sandbox Code Playgroud)

有一些古怪的案例.我有一个可以靠墙站着睡觉的朋友,但大多数人大多数时候会陷入一些简单的情况.

我们定义一些结构并让它们Sleep:

struct Jim;

impl HasBed for Jim {
    fn sleep_in_bed(&self) {}
    fn jump_on_bed(&self) {}
}

struct Jane;

impl HasTent for Jane {
    fn …
Run Code Online (Sandbox Code Playgroud)

traits rust

30
推荐指数
2
解决办法
1万
查看次数

是否可以添加自己的可导出特征,还是由编译器修复?

derive属性允许为数据结构自动实现某些特征.参考文献给出了一个例子:

#[derive(PartialEq, Clone)]
struct Foo<T> {
   a: i32,
   b: T
}
Run Code Online (Sandbox Code Playgroud)

是否可以添加自己的可导出特征,还是由编译器修复?

rust

8
推荐指数
2
解决办法
1222
查看次数

标签 统计

rust ×2

traits ×1