fad*_*bee 2 enums dispatch rust enum-dispatch
我试过了:
#[enum_dispatch(BarTrait, BazTrait)]
pub enum Foo {
VariantZero,
...
}
Run Code Online (Sandbox Code Playgroud)
它似乎忽略了第一个之后的任何特征,默默地。
这会导致错误,因为在这种情况下,编译器似乎不相信 Foo 实现了 BazTrait。
更新:@kmdreko 的代码只要与BazTrait
位于同一个板条箱中就可以正常工作Foo
。
当BazTrait
位于另一个同样使用 的板条箱中时enum_dispatch
,BazTrait
将被忽略并导致以下形式的两个错误:
error[E0599]: no method named `baz` found for enum `Foo` in the current scope
--> src/main.rs:53:9
|
45 | enum Foo {
| -------- method `baz` not found for this
...
53 | foo.baz();
| ^^^ method not found in `Foo`
|
= help: items from traits can only be used if the trait is implemented and in scope
= note: the following trait defines an item `baz`, perhaps you need to implement it:
candidate #1: `mylib::BazTrait`
Run Code Online (Sandbox Code Playgroud)
值得注意的是, 或 处都没有#[enum_dispatch(BarTrait, BazTrait)]
错误pub enum Foo {
。
归档时间: |
|
查看次数: |
1292 次 |
最近记录: |