USEGEAR

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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

struc(structure)

定义并且实例化结构体:

1
2
3
4
5
6
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的值照抄。
};

 

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

1
2
3
4
5
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   USEGEAR  阅读(53)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示