Rustでイテレータを実装するには、in the documentationのように、next
メソッドを実装する必要があります。しかし、Iterator
の形質はhas many more methodsです。イテレータからすべての関数を実装してイテレータを実装しないのはなぜですか?
私が知る限り、我々は形質のすべての方法を実装する必要があります。例えば、これは(playground link)をコンパイルしません:
struct SomeStruct {}
trait SomeTrait {
fn foo(&self);
fn bar(&self);
}
impl SomeTrait for SomeStruct {
fn foo(&self) {
unimplemented!()
}
}
fn main() {}
誤差がかなり明確である:
error[E0046]: not all trait items implemented, missing: `bar`
--> <anon>:9:1
|
9 | impl SomeTrait for SomeStruct {
|^missing `bar` in implementation
本当に素敵です!私は最近、いくつかのコードを貼り付けてコピーし、メソッドのデフォルト実装を持つ方法があるといいと思っていました。私はこれが継承なしでは不可能であると仮定しました。 –