rust 1.2.0
1つの構造体が既存の構造体を拡張し、すべてのフィールドを保持することは可能ですか?使用
問題私は錆を(Javascriptの背景から来る)学習の過程ではまだだと既存を拡張するために、1つのstruct StructB
ことは可能であるかどうかを把握しようとしています
struct 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でこれを達成する正しい方法は何でしょうか?
これは私が疑ったものです。迅速な回答を確認してくれてありがとう!ありがとう!そこのnoobsの残りの部分については...これらのスニペットはあなたのためにコンパイルしますか? 'new'の戻り値の型がなければコンパイルエラーが出ます。 – drebabels
@drebabelsいいえ、それは私の間違いです。私はそれが今コンパイルされていることを確かめました:-) – Shepmaster
@Shepmaster: 'Deref'と 'Child'の' DerefMut'を実装することは、構図アプローチがうまく動作するように長い道を行くでしょう。なぜなら、ほとんどの場合、 'Child'は' Person'のように扱うことができるからです。 –