для типа из другого крейта. А с чем связано это ограничение? Выглядит неудобно
Orphan rule
допустим, в крейте foo: struct Foo; в крейте bar: trait Bar { fn bar() -> bool; } в крейте baz1: impl bar::Bar for foo::Foo { fn bar() -> bool { false } } в крейте baz2: impl bar::Bar for foo::Foo { fn bar() -> bool { true } } и вот ты в своём крейте вызываешь <foo::Foo as bar::Bar>::bar() что он должен вернуть, true или false?
да, наглядно. У меня были мысли, что компилятор мог бы при сборке запретить вторую найденную реализацию, но как верно заметили, тогда слишком часто бы всё ломалось
Он уже запрещает(
Обсуждают сегодня