标签:tom can instance bsp note rom defining write efi
A struct, or structure, is a custom data type that lets you name and package together multiple related values that make up a meaningful group.
相比元组,struct中的属性是无序的
To define a struct, we enter the keyword struct
and name the entire struct. A struct’s name should describe the significance of the pieces of data being grouped together. Then, inside curly brackets, we define the names and types of the pieces of data, which we call fields.
struct User { username: String, email: String, sign_in_count: u64, active: bool, }
let user1 = User { email: String::from("someone@example.com"), username: String::from("someusername123"), active: true, sign_in_count: 1, };
如果其属性可能被修改,那么其实例必须声明为mut可变类型
let mut 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");
Note that the entire instance must be mutable; Rust doesn’t allow us to mark only certain fields as mutable. As with any expression, we can construct a new instance of the struct as the last expression in the function body to implicitly return that new instance.
fn build_user(email: String, username: String) -> User { User { email: email, username: username, active: true, sign_in_count: 1, } }
we can use the field init shorthand syntax to rewrite build_user
so that it behaves exactly the same but doesn’t have the repetition of email
and username
fn build_user(email: String, username: String) -> User { User { email, username, active: true, sign_in_count: 1, } }
It’s often useful to create a new instance of a struct that uses most of an old instance’s values but changes some. You’ll do this using struct update syntax.
let user2 = User { email: String::from("another@example.com"), username: String::from("anotherusername567"), active: user1.active, sign_in_count: user1.sign_in_count, };
The syntax ..
specifies that the remaining fields not explicitly set should have the same value as the fields in the given instance.
let user2 = User { email: String::from("another@example.com"), username: String::from("anotherusername567"), ..user1 };
标签:tom can instance bsp note rom defining write efi
原文地址:https://www.cnblogs.com/perfei/p/10856048.html