История изменений
Исправление FishHook, (текущая версия) :
Кроме того, есть ли в Rust наследование traits? Типа generic_io_device с наследниками serial_io_device и block_io_device.
Если я правильно врубился в раст, вы имплементируете поведение для трейта, а не наследуете, но для конкретных структур это работает как если бы это было наследование
trait Device {
fn write(&self) {
println!("Write to device")
}
}
struct MyDevice;
impl Device for MyDevice {}
trait BlockDevice {}
impl<T> Device for T where T: BlockDevice {
fn write(&self) {
println!("Write to block device")
}
}
struct MyBlockDevice;
impl BlockDevice for MyBlockDevice {
}
fn main() {
let d1 = MyBlockDevice;
let d2 = MyDevice;
let devices: Vec<&dyn Device> = vec![&d1, &d2];
for d in devices {
d.write()
}
}
Исходная версия FishHook, :
Кроме того, есть ли в Rust наследование traits? Типа generic_io_device с наследниками serial_io_device и block_io_device. Если я правильно врубился в раст, вы имплементируете поведение для трейта, а не наследуете, но для конкретных структур это работает как если бы это было наследование
trait Device {
fn write(&self) {
println!("Write to device")
}
}
struct MyDevice;
impl Device for MyDevice {}
trait BlockDevice {}
impl<T> Device for T where T: BlockDevice {
fn write(&self) {
println!("Write to block device")
}
}
struct MyBlockDevice;
impl BlockDevice for MyBlockDevice {
}
fn main() {
let d1 = MyBlockDevice;
let d2 = MyDevice;
let devices: Vec<&dyn Device> = vec![&d1, &d2];
for d in devices {
d.write()
}
}