我正在尝试使用traits和运算符重载在Rust中实现C++样式表达式模板.我试图为每个表达式模板结构重载'+'和'*'.编译器抱怨Add
和Mul
trait实现:
错误:无法提供扩展实现,其中特征和类型都未在此包中定义
如果我试图实现特征的类型在没有我的包的情况下是可构造的,那么该错误将是有意义的,但该类型是必须实现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 ×1