study_rust_example/struct_related/
define_init_struct.rs

1#[derive(Debug)]
2struct User {
3    user_id: String,
4    user_name: String,
5    age: u8,
6    active: bool,
7}
8
9/*
10 error[E0106]: missing lifetime specifier
11   --> src/struct_related/struct_related.rs:11:20
12   |
1311 |         user_name: &str,
14   |                    ^ expected named lifetime parameter
15   |
16 help: consider introducing a named lifetime parameter
17 */
18/*struct UserRef {
19    user_id: &str,
20    user_name: &str,
21    age: u8,
22    active: bool,
23}*/
24// 元组类型不需要命名的地方
25struct Color(i32, i32, i32);
26struct Point(i32, i32);
27fn build_user(user_name: String, user_id: String, age: u8) -> User {
28    User {
29        user_name,
30        user_id,
31        age,
32        active: true,
33    }
34}
35fn create_user_and_modify(name: &str) -> User {
36    let mut user = build_user(String::from("user_name"), String::from("user_id"), 28);
37    user.user_name = name.to_string();
38    return user;
39}
40pub fn define_init_struct_study() {
41    let name = String::from("Jack");
42    let user = create_user_and_modify(&name);
43    let user2 = User { age: 18, ..user };
44    let color = Color(32, 34, 43);
45    let point = Point(23, -23);
46    dbg!(&user2);
47}