考虑这段代码:
pub trait Hello {
fn hello(&self);
}
impl Hello for Any {
fn hello(&self) {
println!("Hello!!!!!");
}
}
我记得在某处看到 Rust 中有一个新特性,它可以让你实现一个所有对象都可以直接访问的函数,如下所示:
let foo = 0 as u8;
foo.hello();
很遗憾,我没能找到它。是否真的有一个全局/通用的“实现者”?
最佳答案
好吧,你可以对你的特征做一个通用的实现:
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。
关于rust - 所有 T、&T、&mut T、[T]、&[T]、*mut T 的通用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56177664/