I have various structs that all implement the same trait. I want to branch on some condition, deciding at runtime which of those structs to instantiate. Then, regardless of which branch I followed, I want to call methods from that trait.
Is this possible in Rust? I'm hoping to achieve something like the following (which does not compile):
trait Barks {
    fn bark(&self);
}
struct Dog;
impl Barks for Dog {
    fn bark(&self) {
        println!("Yip.");
    }
}
struct Wolf;
impl Barks for Wolf {
    fn bark(&self) {
        println!("WOOF!");
    }
}
fn main() {
    let animal: Barks;
    if 1 == 2 {
        animal = Dog;
    } else {
        animal = Wolf;
    }
    animal.bark();
}
 
     
     
    