LINUX.ORG.RU

История изменений

Исправление Aswed, (текущая версия) :

Ну тогда я все правильно сказал. Раст из коробки умеет в ооп, а ты не разобрался. Вот смотри ООП это у нас что

1 Наследование: trait Child: Parent

2 Инкапсуляция:

impl Foo {
    pub fn public_method(&self) {}
    fn private_method(&self) {}
}

3 Полиморфизм:

struct Dog {}
struct Cat {}
trait Animal {
    fn hello(&self) -> &'static str;
}
impl Animal for Dog {
    fn hello(&self) -> &'static str {"bark"}
}
impl Animal for Cat {
    fn hello(&self) -> &'static str {"meow"}
}
fn main() {
    let animals: Vec<Box<dyn Animal>> = vec![
        Box::new(Dog{}), Box::new(Cat{})
    ];
    for x in animals {
        println!("{}", x.hello())
    }
}

ШОК! СЕНСАЦИЯ! ПРОГРАММИСТ ПИШЕТ ОО КОД НИ РАЗУ НЕ ИСПОЛЬЗОВАВ СЛОВО КЛАСС! СМОТРЕТЬ ПОЛНОСТЬЮ ПО ССЫЛКЕ!

Исходная версия Aswed, :

Ну тогда я все правильно сказал. Раст из коробки умеет в ооп, а ты не разобрался. Вот смотри ООП это у нас что

1 Наследование: trait Child: Parent

2 Инкапсуляция:

impl Foo {
    pub fn public_method(&self) {}
    fn private_method(&self) {}
}

3 Полиморфизм:

struct Dog {}
struct Cat {}
trait Animal {
    fn hello(&self) -> &'static str;
}
impl Animal for Dog {
    fn hello(&self) -> &'static str {"bark"}
}
impl Animal for Cat {
    fn hello(&self) -> &'static str {"meow"}
}
fn main() {
    let animals: Vec<Box<dyn Animal>> = vec![
        Box::new(Dog{}), Box::new(Cat{})
    ];
    for x in animals {
        println!("{}", x.hello())
    }
}

ШОК! СЕНСАЦИЯ! ПРОГРАММИСТ ПИШЕТ ОО КОД НИ РАЗУ НЕ ИСПОЛЬЗОВАВ СЛОВО КЛАСС! СМОТРЕТЬ ПОЛНОСТЬЮ ПО ССЫЛКЕ!