Zastanawiam się, czy jest jakaś praktyczna różnica w wykorzystaniu polimorfizmu w Rust poprzez trait object albo przez szablon? W teorii jest i znalazłem ciekawą odpowiedź na stacku: link ale jestem ciekaw waszego zdania, który typ preferujecie? Nie mogę się zdecydować, który rodzaj stosować domyślnie w swoich programach :)
fn main() {
let gandalf = Mage{};
poly_with_dyn(&gandalf);
poly_with_templ(&gandalf);
}
trait Magic {
fn spell(&self);
}
struct Mage {
}
impl Magic for Mage {
fn spell(&self) {
println!("Fireball");
}
}
fn poly_with_dyn(mage: &dyn Magic) {
mage.spell();
}
fn poly_with_templ<T: Magic>(mage: &T) {
mage.spell();
}