Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

rust の trait

rust の trait は大雑把に言って、swift の protocol に相当する。
以下サンプルを見てみよう。

fn main() {
    let mut bicycle = Bicycle {
        pos: 0
    };
    bicycle.forward();
}

struct Bicycle {
    pub pos: i32
}

trait Movable {
    fn forward(&mut self);
}

// Bicycle にメソッドを追加するにはimplを使う
// あるtraitのメソッドの場合はfor の後ろにtrait名を入れる
// Bicycleの状態を変更するのでselfの前に&mutをつける
impl Movable for Bicycle {
    fn forward(&mut self) {
        self.pos = self.pos + 1;
        println!("pos: {}", self.pos);
    }
}
pos: 1