【发布时间】:2015-09-13 17:36:17
【问题描述】:
使用rust 1.2.0
问题
我仍在学习 Rust(来自 Javascript 背景)并试图弄清楚一个结构 StructB 是否有可能扩展现有结构 StructA 使得 StructB 具有StructA 上定义的所有字段。
在 Javascript(ES6 语法)中,我基本上可以做这样的事情......
class Person {
constructor (gender, age) {
this.gender = gender;
this.age = age;
}
}
class Child extends Person {
constructor (name, gender, age) {
super(gender, age);
this.name = name;
}
}
约束
-
StructA来自我无法控制的外部cargo包。
当前进度
我找到了这个blog post on single-inheritance,听起来正是我需要的。
但尝试实现它会导致此错误消息error: virtual structs have been removed from the language。后来搜索了一下,我发现它很快就变成了implemented and then removed per RFC-341。
还发现了这个thread about using traits,但由于StructA 来自外部货物包,我认为我不可能将其变成特征。
那么在 Rust 中实现这一点的正确方法是什么?
【问题讨论】:
-
我认为在不知道您要使用新生成的结构的上下文及其原因的情况下回答这个问题总是次优的。在我看来,这些设计决策很大程度上取决于具体的用例。
标签: inheritance struct rust