Что делает "impl MyTrait" без "для MyStruct" в Rust?

Черты в Rust допускают реализацию по умолчанию для методов черт: вы можете написать некоторую реализацию прямо внутри trait MyTrait {...} и он будет использоваться в impl MyTrait for MyStruct потом.

Тем не менее, вы также можете написать простой impl MyTrait, который не влияет на поведение программы:

trait MyTrait {
    fn foo(&self) {  // Default implementation
        println!("1");
    }
}

impl MyTrait for i32 {
}

fn main() {
    1i32.foo();  // Prints '1'
}

impl MyTrait {  // What is this?
    fn foo(&self) {
        println!("2");  // Does nothing?
    }
}

Что это такое impl MyTrait без всяких for SomeType? Он компилируется только с предупреждением "мертвый код", поэтому я полагаю, что это имеет какое-то значение для компилятора. Но я не понимаю, есть ли способ назвать это.

0 ответов

Другие вопросы по тегам