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(
下面的例子显示了一个 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,
}
}
//是否感到到麻烦,邮箱和用户名需要对应才能初始化,不要出差错。是否有方法更简单赋值,有:
使用结构体更新语句从其他实例创建实例:
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的生命周期