考虑以下代码:
pub trait Hello {
fn hello(&self);
}
impl Hello for Any {
fn hello(&self) {
println!("Hello!!!!!");
}
}
我记得在某处看到Rust中有一个新功能,该功能使您可以实现可直接用于所有对象的功能,如下所示:
let foo = 0 as u8;
foo.hello();
很遗憾,我找不到它。实际上有一个全局/通用的“执行器”吗?
答案 0 :(得分:2)
好吧,您可以对特征进行通用实现:
pub trait Hello {
fn hello(&self);
}
impl<T> Hello for T {
fn hello(&self) {
println!("Hello!!!!!");
}
}
fn main() {
let foo = 0 as u8;
foo.hello();
let bar = "world!".to_string();
bar.hello();
}
请注意,Rust当前不允许泛型的特殊化(尽管上面有open RFC),因此您的特征实现必须按原样对任何T起作用。