use ::core::convert::TryInto;
use enum_dispatch::enum_dispatch;
mod core {}
struct MyImplementorA {}
impl MyBehavior for MyImplementorA {
fn my_trait_method(&self) {}
}
struct MyImplementorB {}
impl MyBehavior for MyImplementorB {
fn my_trait_method(&self) {}
}
#[enum_dispatch]
enum MyBehaviorEnum {
MyImplementorA,
MyImplementorB,
}
#[enum_dispatch(MyBehaviorEnum)]
trait MyBehavior {
fn my_trait_method(&self);
}
#[test]
fn main() {
let a: MyBehaviorEnum = MyImplementorA {}.into();
a.my_trait_method();
let _a: MyImplementorA = a.try_into().unwrap();
}