プログラミング言語Rust 5章 メモ

5.1 構造体のインスタンス化

痒い所に手が届く初期化方法のメモ

struct User {
    name: String,
    email: String,
    sign_in_count: u64,
    active: bool,
}

初期化の省略記法

タプルの拡張

struct Color(i32, i32, i32)
struct Point(i32, i32, i32)

let dark = Color(0,0,0)
let death_star = Point(0,0,0)

5.2 構造体の利用例

5.3 メソッドの実装

#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}

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

    // 他の四角を自分の中に収められるか
    // 所有権を奪わないよう、不変参照渡しにする点に注意
    fn can_hold(&self, other: &Rectangle) -> bool {
        self.width > other.width && self.height > other.height
    }
}