#[enum_delegate::implement_for(People,
enum People {
Arthur(Arthur),
Pablo(Pablo),
}
)]
trait SayHello {
fn say_hello(&self, name: &str) -> String;
}
struct Arthur;
impl SayHello for Arthur {
fn say_hello(&self, name: &str) -> String {
format!("Hello, {name}!")
}
}
struct Pablo;
impl SayHello for Pablo {
fn say_hello(&self, name: &str) -> String {
format!("Hola, {name}!")
}
}
enum People {
Arthur(Arthur),
Pablo(Pablo),
}
#[test]
fn test_people() {
let p: Vec<People> = vec![People::Arthur(Arthur), People::Pablo(Pablo)];
assert_eq!(p[0].say_hello("enum_delegate"), "Hello, enum_delegate!");
assert_eq!(p[1].say_hello("enum_delegate"), "Hola, enum_delegate!");
}