C++允许使用类子类型,这非常方便,因为您可以使用派生类为基类实现的函数。 Rust似乎没有这样的东西。该功能似乎在某些时候已经可用,但自此之后已被删除。这在Rust中是不可能的吗?如果是这样,有没有计划有这个功能?Rust中的子类型
我想要做的就是确定从另一个结构,这在C++看起来像继承结构:
struct Base {
int x;
int y;
void foo(int x, int y) { this->x = x; this->y = y; }
}
struct Derived: public Base {
...
}
void main() {
Derived d;
d.foo();
}
的方式我看它,在防锈你必须写,为了这样的事情使可用于所有“衍生”结构相同的功能:
struct Base<T> {
x: i32,
y: i32,
derived: T
}
impl<T> Base<T> {
fn foo(&mut self, x: i32, y: i32) {
self.x = x;
self.y = y;
}
}
我觉得做一个impl<T> for Base<T>
会产生一吨的相同功能的拷贝,所以成分是不是一个真正的选择。
我应该指出,上面的实现被选中的原因很简单,它允许一个更安全的upcasting版本,无论如何我都需要这样做。
铁锈甚至没有类。它为运行时多态性使用基于特征的系统。你可以添加一个你想要的东西的例子(也许用C++编写的工作代码)?然后我们可以告诉你如何将它写入Rust :) –
编辑原始文章更清晰。 – eugene2k
作为一名C++程序员,我觉得需要指出的是,指导原则是**优先于继承构成**,而您的示例通常被认为是反模式。继承应该只用于重写行为(又名'虚拟'函数),从非多态类继承通常是一个错误(混合两个概念:是 - 关系和代码重用)。幸运的是,Rust具有后见之明,在Rust中没有继承:) –