trait 支持默认方法怎么写?

对应的 Rust 的一个功能吧, Traits: Defining Shared Behavior - The Rust Programming Language 没试出来怎么写, 不知道是否有支持?

我个人用例当中会把一些公共的胶水代码放在 trait 上, 这样避免每个 struct 实现的时候重复写代码, 一个场景:

或者是否有可以替代的方案?

pub trait Trait {
  default() -> Int
  add(Self,Self) -> Self
}

impl Trait with default() {
  0
}

看起来文档把这个特性漏了

1 个赞

再问下怎样在语法中间加上 ToJson 的约束呢?

/// implement this on data which creates effect
pub trait RespoEffect {
  turn_effect(Self) -> RespoEffectBox
  make_handler(Self) -> (RespoEffectType, @web_sys.Node) -> Unit
}

impl RespoEffect with turn_effect(self) -> RespoEffectBox {
  { args: self.to_json(), handler: (self as RespoEffect).make_handler() }
}
 25 │   { args: self.to_json(), handler: (self as RespoEffect).make_handler() }
    │                ───┬───
    │                   ╰───── Type Self has no method to_json.

我是不是试出来了:

pub trait RespoEffect: ToJson {...}

通过这个来约束.