USEGEAR

导航

study Rust-6【使用结构体组织相关联的数据】

struc(structure)

定义并且实例化结构体:

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

 User的结构定义。这种形式,写过程序的很熟悉。

看一下程序中如何定义:

let user1 = User {
    email: String::from("someone@example.com"),
    username: String::from("someusername123"),
    active: true,
    sign_in_count: 1,
};
//下面是相关处理
user1.email = String::from(
"anotheremail@example.com");

 

下面的例子显示了一个 build_user 函数,它返回一个带有给定的 email 和用户名的 User 结构体实例。active 字段的值为 true,并且 sign_in_count 的值为 1

fn build_user(email: String, username: String) -> User {
    User {
        email: email,
        username: username,
        active: true,
        sign_in_count: 1,
    }
}
//是否感到到麻烦,邮箱和用户名需要对应才能初始化,不要出差错。是否有方法更简单赋值,有:

fn build_user(email: String, username: String) -> User {
    User {
        email,//注意没有定义类型,名字相同
        username,//注意没有定义类型,名字相同
        active: true,
        sign_in_count: 1,
    }
}

 

使用结构体更新语句从其他实例创建实例:

let user2 = User {
    email: String::from("another@example.com"),
    username: String::from("anotherusername567"),
    ..user1 //这个二个点代表懒人剩下取user1的值照抄。
};

 

使用没有命名字段的元组结构体来创建不同的类型

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

let black = Color(0, 0, 0);
let origin = Point(0, 0, 0);

 没有任何字段的类单元结构体

关于struct的生命周期

posted on 2021-07-05 11:49  USEGEAR  阅读(51)  评论(0编辑  收藏  举报