Универсальный impl для всех T, & T, & Mut T, [T], & [T], * Mut T - PullRequest
0 голосов
/ 17 мая 2019

Рассмотрим этот код:

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

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

Я помню, как где-то видел, что в Rust появилась новая функция, которая позволяет вам реализовать функцию, которая напрямую доступна для всех объектов, таких как:

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

К сожалению, я не смог найти его. Есть ли вообще глобальный / универсальный «разработчик»?

1 Ответ

2 голосов
/ 17 мая 2019

Ну, вы можете сделать общую реализацию своей черты:

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 не разрешает специализацию дженериков (хотя на нем есть открытый RFC ), поэтому ваша реализация черты должна работать как есть для любого T.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...