Что делает "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
? Он компилируется только с предупреждением "мертвый код", поэтому я полагаю, что это имеет какое-то значение для компилятора. Но я не понимаю, есть ли способ назвать это.