Rust学习笔记(5)- 定义和实例化
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TestOps
扫码关注公众号
扫码阅读
手机扫码阅读
定义和实例化
在Rust中,结构体(struct)用于组织相关联的值,每个值通过命名提高可读性。结构体定义和实例化的语法类似于Go语言。例如:
struct User {
active: bool,
username: String,
email: String,
sign_in_count: u64,
}
实例化结构体时,可以直接赋值给其字段:
let user1 = User {
email: String::from("someone@example.com"),
username: String::from("someusername123"),
active: true,
sign_in_count: 1,
};
简易形式的结构体赋值
字段名与参数名相同的情况下,可以简写:
fn build_user(email: String, username: String) -> User {
User {
email,
username,
active: true,
sign_in_count: 1,
}
}
用一个struct给另一个struct赋值
可以使用结构体更新语法来复用其他实例的字段值:
let user2 = User {
email: String::from("another@example.com"),
..user1
};
这种语法允许快速地创建一个新的struct实例,复用部分旧的值,但要注意字段的所有权问题。
tuple struct结构体
Rust也支持tuple struct,它们看起来像是命名的元组:
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
尽管两个tuple struct可能有相同的字段值,它们被视为不同的类型。
空结构体
空结构体不包含任何字段:
struct AlwaysEqual;
关于struct的ownership
通常结构体不包含引用,除非使用生命周期(lifetime)标注。不正确地使用引用会导致编译错误,例如:
struct User {
active: bool,
username: &str, // 错误:缺少生命周期标注
email: &str, // 错误:缺少生命周期标注
sign_in_count: u64,
}
TestOps
TestOps
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
TestOps的其他文章
《PlayWright全解析——从入门到精通》-1
PlayWright旨在提供一种跨平台、跨语言、跨浏览器,并且能支持移动端浏览器的自动化测试框架。
构建质量内建道法术器中的自动化测试,我有几个建议
作为一个经常不说人话的大会(走穴)分享讲师,最近几年都喜欢跨栈的聊一些关于道法级别的内容,毕竟质量内建要靠任何一个部门都很难做到。那么既然要先做自动化才能做左移或者右移,来聊点干货。
《PlayWright全解析——从入门到精通》-6
进阶应用
HTTP请求的拦截
可能存在这样的几种情况,?
测试开发进阶之旅
从2019年开始讲Spring的测开架构到2020年讲Go微服务开发,再到2021年中引入了DevOps平台开发的内容,如何讲走在行业前端一直是这门课程的定义,所以也对于讲师提出了讲自己觉得有用的东西的定位,也就有了下面的讲师总结。
从自动化到端到端自动化
从做自动化到做端到端自动化几乎都是每个走上“测开”这条道路的朋友的必经之路,毕竟通过Code来极致拉通一切,
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线