小编Mic*_*yne的帖子

为Rust中具有特征的所有结构重载运算符

我正在尝试使用traits和运算符重载在Rust中实现C++样式表达式模板.我试图为每个表达式模板结构重载'+'和'*'.编译器抱怨AddMultrait实现:

错误:无法提供扩展实现,其中特征和类型都未在此包中定义

如果我试图实现特征的类型在没有我的包的情况下是可构造的,那么该错误将是有意义的,但该类型是必须实现HasValue我定义的特征的泛型.

这是代码:

trait HasValue {
    fn get_value(&self) -> int;
}

// Val

struct Val {
  value: int
}

impl HasValue for Val {
  fn get_value(&self) -> int {
    self.value
  }
}


// Add

struct AddOp<T1: HasValue + Copy, T2: HasValue + Copy> {
    lhs: T1,
    rhs: T2
}

impl<T1: HasValue + Copy, T2: HasValue + Copy> HasValue for AddOp<T1, T2> {
  fn get_value(&self) -> int {
    self.lhs.get_value() + self.rhs.get_value()
  }
}

impl<T: …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
788
查看次数

标签 统计

rust ×1