【Rust】インプリメンテーション(impl)

インプリメンテーションとは構造体にメソッドを追加するもの。Rustにクラスはない。

struct Rect { width: u32, height: u32}

impl Rect {
    fn area(&self) -> u32 {
        self.width * self.height
    }
}

fn main(){
    let r = Rect {width: 200, height: 300};
    println!("{}", r.area());
}

C++のclass

#include <iostream>
#include <string>

class Car {
    public:
        std::string owner;
        std::string color;
        int number;
};

auto main(void) -> int {
    auto a = Car();
    a.owner = "山田";
    a.color = "blue";
    a.number = 1234;
    std::cout << "a.owner =" << a.owner << ", a.color =" << a.color 
        << ", a.number =" << a.number << std::endl;
}

rustでimplを使ってclassを書く

struct Car { 
    owner: String, 
    color: String,
    number: u32,
}

impl Car {
    fn prnt(&self) {
        println!("{} {} {}", self.owner, self.color, self.number);
    }
}

fn main(){
    let c = Car {owner: "山田".to_string(), color: "blue".to_string(), number: 1234};
    c.prnt();
}

$ ./main
山田 blue 1234

なるほど〜