Rust 重载使用特征的方法
我正在努力使用Rust中涉及多种类型的特性来模拟方法重载 在C++中,我会写< /P>Rust 重载使用特征的方法,rust,traits,Rust,Traits,我正在努力使用Rust中涉及多种类型的特性来模拟方法重载 在C++中,我会写< /P> struct-PdlDict{ 无效更新(常量字符串&,常量字符串&,双x){…} 无效更新(常量字符串&,常量字符串&,常量字符串x){…} }; 叫它 PdlDict-d; d、 更新(123.0); d、 更新(“foo”); 对于此PdlDictstruct pub struct PdlDict { pub pdl_items: Vec<PdlItem>, } impl Pdl
struct-PdlDict{
无效更新(常量字符串&,常量字符串&,双x){…}
无效更新(常量字符串&,常量字符串&,常量字符串x){…}
};
叫它
PdlDict-d;
d、 更新(123.0);
d、 更新(“foo”);
对于此PdlDict
struct
pub struct PdlDict {
pub pdl_items: Vec<PdlItem>,
}
impl PdlDict {
fn new() -> PdlDict {
PdlDict {
pdl_items: Vec::new(),
}
}
}
以惯用的方式实现相同语义的更合适的方法是什么
我怀疑这是特征和模板的结合,但我想不出如何处理这个问题
编辑
注意,这个问题不是问如何使用traits实现继承。我已经在这个例子中这样做了,效果很好。它要求以上面给出的风格表达继承的方式,惯用的方式是写一些你所做的事情,然后添加人体工程学:
impl PdlDict {
fn update<T: UpdatePdl>(&self, object_name: &str, name: &str, t: T) {
t.update(&self, object_name, name)
}
}
impl-PdlDict{
fn更新(&self,对象名称:&str,名称:&str,t:t){
t、 更新(&self,对象名称,名称)
}
}
"bar".update(&pdl, "r", "result");
64.0.update(&pdl, "r", "result");
impl PdlDict {
fn update<T: UpdatePdl>(&self, object_name: &str, name: &str, t: T) {
t.update(&self, object_name, name)
}
}