TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Rust: getterとsetter

Rustでgetterとsetterを作りたかたったので調べました。


oop - Writing getter/setter properties in Rust - Stack Overflow
↑のサイトから拝借して、単純化してみると以下になりました。

#[derive(Default)]
struct Person {
    first_name: String,
}

impl Person {
    // Immutable access.
    fn first_name(&self) -> &String {
        &self.first_name
    }
    // Mutable access.
    fn first_name_mut(&mut self) -> &mut String {
        &mut self.first_name
    }
}

setterは関数内では値を代入せずに、&mutを返していて、受け取り元で値変更ができるようになっていました。
rustではこういうのはパターンの一つとしてあるようです。

疑問

setterで何かsetする前に値に応じて処理を行いたい場合はできないのではないでしょうか?