Rust - Basic - 16 - Объектно-ориентированное программирование

Объектно-ориентированное программирование

ООП

Кратко

  • некоторые полиморфные свойства (не все)

    Абстракция: объект содержит данные и поведение — Objects Contain Data and Behavior

    Инкапсуляция: скрытие деталей реализации — Encapsulation that Hides Implementation Details

    Наследование: наследование как система типов и способ переиспользования кода — Inheritance as a Type System and as Code Sharing

  • trait object

    Box — это trait object; Rust разрешает его во время выполнения, что расходует часть производительности — по возможности не используйте

    pub trait Draw {
        fn draw(&self);
    }
    // trait object
    pub struct Screen {
        pub components: Vec<Box<dyn Draw>>,
    }
    impl Screen {
        pub fn run(&self) {
            for component in self.components.iter() {
                component.draw();
            }
        }
    }
    // generic type + trait bound
    pub struct Screen<T: Draw> {
        pub components: Vec<T>,
    }
    impl<T> Screen<T>
    where
        T: Draw,
    {
        pub fn run(&self) {
            for component in self.components.iter() {
                component.draw();
            }
        }
    }
    

Источник

https://doc.rust-lang.org/book/ch17-00-oop.html