所有T,&T,&mut T,[T],&[T],* mut T的通用表示

时间:2019-05-16 23:08:21

标签: rust

考虑以下代码:

pub trait Hello {
    fn hello(&self);
}

impl Hello for Any {
    fn hello(&self) {
        println!("Hello!!!!!");
    }
}

我记得在某处看到Rust中有一个新功能,该功能使您可以实现可直接用于所有对象的功能,如下所示:

let foo = 0 as u8;
foo.hello();

很遗憾,我找不到它。实际上有一个全局/通用的“执行器”吗?

1 个答案:

答案 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起作用。