t_wの輪郭

struct

2022/2/18 0:55:00

Rustの構造体


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

fn main() {
    let user1 = User {
        email: String::from("someone@example.com"),
        username: String::from("someusername123"),
        active: true,
        sign_in_count: 1,
    };

    println!("{}", user1.email);    //someone@example.com
}

構造体更新記法

2022/2/18 1:07:00

多くは前の個体の値を使用しつつ、変更する箇所もある形で新しい個体を生成できる記法

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

fn main() {
    let user1 = User {
        username: String::from("username1"),
        email: String::from("[email protected]"),
        active: true,
        sign_in_count: 1,
    };

    let user2 = User {
        username: String::from("username2"),
        email: String::from("[email protected]"),
        ..user1                                         //構造体更新記法でuser1から残りの欄の値を引き継ぐ
    };

    println!("{}", user2.username);    //username2
}

ユニット様構造体

2022/2/18 1:14:00

欄のない構造体。ユニット型と似たような振る舞いをする。

タプル構造体

2022/2/18 1:12:00
fn main() {
    struct Color(i32, i32, i32);    //タプル構造体
    let black = Color(0, 0, 0);
    println!("{}", black.0);    //0
}