Recentemente ho iniziato a studiare Rust e Scala e ciò che mi ha colpito è stata la mancanza del modello di ereditarietà a cui sono abituato in C ++ e Java.
Sebbene io possa modellare cose semplici con struct e tratti in Rust, voglio vedere un modo più idiomatico per modellare diversi tipi di domini problematici usando tratti e composizione.
Ad esempio, supponiamo di voler modellare il pattern Observer. Tipicamente in Java creiamo,
class InterestingThing implements Observable {
private String[] things;
private Object[] observers;
public void register(Observer o) {
... //register
}
public void notifyAll() {
// notify
}
public void deregister(Observer o) {}
// some more stuff
}
class Dude extends Observer<InterestingThing> {
// Observer implementation
}
Non sto chiedendo una traduzione a Rust, voglio vedere come si potrebbe modellare in modo idiomatico questo modello di Osservatore in Rust. Qualsiasi linea guida generale (come tutti i nomi sono classi) per l'analisi e la modellizzazione del dominio problematico con sistema basato sui tratti sono ben accetti.