mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-08 18:26:48 +00:00
32 lines
470 B
Rust
32 lines
470 B
Rust
use intertrait::cast::*;
|
|
use intertrait::*;
|
|
|
|
#[cast_to(Greet)]
|
|
#[allow(dead_code)]
|
|
enum Data {
|
|
Var1,
|
|
Var2(u32),
|
|
}
|
|
|
|
trait Source: CastFrom {}
|
|
|
|
trait Greet {
|
|
fn greet(&self);
|
|
}
|
|
|
|
impl Greet for Data {
|
|
fn greet(&self) {
|
|
println!("Hello");
|
|
}
|
|
}
|
|
|
|
impl Source for Data {}
|
|
|
|
#[test]
|
|
fn test_cast_to_on_enum() {
|
|
let data = Data::Var2(1);
|
|
let source: &dyn Source = &data;
|
|
let greet = source.cast::<dyn Greet>();
|
|
greet.unwrap().greet();
|
|
}
|