标签: enum-dispatch

如何将两个特征与 enum_dispatch 一起使用?

我试过了:

#[enum_dispatch(BarTrait, BazTrait)]
pub enum Foo {
    VariantZero,
    ...
}
Run Code Online (Sandbox Code Playgroud)

它似乎忽略了第一个之后的任何特征,默默地。

这会导致错误,因为在这种情况下,编译器似乎不相信 Foo 实现了 BazTrait。


更新:@kmdreko 的代码只要与BazTrait位于同一个板条箱中就可以正常工作Foo

BazTrait位于另一个同样使用 的板条箱中时enum_dispatchBazTrait将被忽略并导致以下形式的两个错误:

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 …
Run Code Online (Sandbox Code Playgroud)

enums dispatch rust enum-dispatch

2
推荐指数
1
解决办法
1292
查看次数

标签 统计

dispatch ×1

enum-dispatch ×1

enums ×1

rust ×1