use std::env; pub struct A; impl A { fn say_something(&self) { println!("Something") } } pub struct B; impl B { fn say_nothing(&self) { println!("Nohing") } } pub enum X { A { element_a: A }, B { element_b: B } } #[test] pub fn teste_static_enum() { let curdir = env::current_dir().unwrap(); println!("Running test from folder: {:?}", curdir.as_path().to_str()); let a1 = X::A { element_a: A {} }; let b1 = X::B { element_b: B {} }; match a1 { X::A { element_a } => element_a.say_something(), X::B { element_b } => element_b.say_nothing() } match b1 { X::A { element_a } => element_a.say_something(), X::B { element_b } => element_b.say_nothing() } }