Criando Classes em Rust

(Programação orientado a Objeto)

Arquivo: classe.py
struct Caixa {
    cor: String,
    altura: String,
    profundidade: String,
    largura: String,
}

impl Caixa {
    fn new(cor: &str, altura: &str, profundidade: &str, largura: &str) -> Caixa {
        Caixa {
            cor: String::from(cor),
            altura: String::from(altura),
            profundidade: String::from(profundidade),
            largura: String::from(largura),
        }
    }

    fn muda_cor(&mut self, cor: &str) {
        self.cor = String::from(cor);
    }

    fn mostrar_cor(&self) -> &String {
        &self.cor
    }
}

fn main() {
    let mut caixa = Caixa::new("azul", "15cm", "30cm", "20cm");
    println!("{}", caixa.cor);

    caixa.cor = String::from("amarelo");
    println!("{}", caixa.cor);

    caixa.muda_cor("rosa");
    println!("{}", caixa.cor);

    caixa.muda_cor("vermelho");
    println!("{}", caixa.mostrar_cor());
}
Resultado:
~$ python3 classe.py
azul
amarelo
rosa
vermelho