Rust - pár dotazů

Rust - pár dotazů
« kdy: 01. 04. 2020, 00:33:17 »
Ahoj. Měl bych pár otázek na programování v Rustu.

Mám kód:
Kód: [Vybrat]
struct Animal {
    name: String,
    sound: String,
}

impl Animal {
    fn print_data(&self) {
        println!("Name: {}", self.name);
        println!("Sound: {}", self.sound);
    }
}
fn main() {
    let cat = Animal {
        name: String::from("Cat"),
        sound: String::from("Mňau!"),
    };
    cat.print_data();
}

Za prvé, Nebylo by lepší použít &'static str místo Stringu ve struktuře? Proč ano nebo ne?
Za druhé, má nějaký smysl v tomto programu použít traits?


Ink

  • *****
  • 670
    • Zobrazit profil
    • E-mail
Re:Rust - pár dotazů
« Odpověď #1 kdy: 01. 04. 2020, 07:38:25 »
1. Urcite bych pouzil &'static str - v tomhle pripade jde o ergonomii a stejne s tim nic extra nedelas.
2. print_data() je pomerne neobvykly zpusob vypsani obsahu, tady je to rozhodne vhodnejsi resit nejakym traitem (formatovani je otazka), treba:

Kód: [Vybrat]
use std::fmt;

struct Animal {
    name: &'static str,
    sound: &'static str,
}

impl fmt::Display for Animal {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Name: {}, Sound: {}", self.name, self.sound)
    }
}

fn main() {
    let cat = Animal {
        name: "Cat",
        sound: "Mňau!",
    };
    println!("{}", cat);
}