summaryrefslogblamecommitdiff
path: root/rust-book/oop/src/lib.rs
blob: 91ef2e82c14d1db44b34e7c22dbde07f5bf22dc1 (plain) (tree)








































                                                 
pub trait Draw {
    fn draw(&self);
}

pub struct Screen {
    pub components: Vec<Box<dyn Draw>>,
}

impl Screen {
    pub fn run(&self) {
        for component in self.components.iter() {
            component.draw();
        }
    }
}

pub struct Button {
    pub width: u32,
    pub height: u32,
    pub label: String,
}

impl Draw for Button {
    fn draw(&self) {
        dbg!("drew button");
    }
}

pub struct SelectBox {
    pub width: u32,
    pub height: u32,
    pub options: Vec<String>,
}

impl Draw for SelectBox {
    fn draw(&self) {
        dbg!("drew select box");
    }
}