Mam różne struktury, które wszystkie realizują tę samą cechę. Chcę rozgałęziać się pod pewnymi warunkami, decydując w czasie wykonywania, które z tych struktur utworzyć. Następnie, bez względu na to, którą gałąź podążyłem, chcę wywołać metody z tej cechy.Czy dozwolone są zmienne polimorficzne?
Czy to możliwe w Rust? Mam nadzieję, że uda mi się osiągnąć coś takiego (co nie kompiluje):
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();
}
Dzięki! Wspomniałeś, że mogę używać zwykłych referencji. Jak to może działać? – rlkw1024
Zobacz moją odpowiedź dla zwykłych referencji. – Shepmaster