Ich habe Schwierigkeiten zu simulieren Methode überladen mit Merkmalen in Rust, wo es mehrere Arten beteiligt sind.Überladen Sie eine Methode mit Traits
In C++ würde ich
struct PdlDict {
void update(const string&,const string&, double x) {...}
void update(const string&,const string&, const string x) {...}
};
schreiben und nennen es
PdlDict d;
d.update(123.0);
d.update("foo");
In Rust für dieses PdlDict
struct
pub struct PdlDict {
pub pdl_items: Vec<PdlItem>,
}
impl PdlDict {
fn new() -> PdlDict {
PdlDict {
pdl_items: Vec::new(),
}
}
}
ich dieses Merkmal implementiert, die
arbeitet 10Berufung fühlt sich nicht ergonomisch wie ich das Objekt zu übergeben, die als erstes Argument aktualisieren mögen:
"bar".update(&pdl, "r", "result");
64.0.update(&pdl, "r", "result");
Was die eine angemessenere Art und Weise ist die gleiche Semantik in einer idiomatischen Rust Art und Weise zu erreichen, ?
Ich vermute, es ist eine Kombination von Eigenschaften und Vorlagen, aber ich kann nicht denken, wie man sich nähert.
Bearbeiten Beachten Sie, dass diese Frage nicht fragt, wie die Vererbung mithilfe von Merkmalen implementiert wird. Ich habe das bereits in diesem Beispiel getan und es funktioniert gut. Es fragt nach einer Art und Weise, in einem Stil über