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