6.1 结构体的定义和实例化
6.1.1 结构体定义、创建实例
6.1.2 创建实例:字段初始化简写语法
6.1.3 创建实例:结构体更新语法(注意:数据的移动特性!)
..
语法:指定了剩余未显式设置值的字段应有与给定实例对应字段相同的值- 注意:结构体中的“移动”(用到了任意一个未实现
copy trait
类型的数据)与“克隆”(只使用了实现copy trait
类型的数据)特性!!!
6.1.4 元组结构体
6.1.5 类单元结构体
6.1.6 结构体数据的所有权
6.2 结构体示例程序(打印结构体的内容,dbg)
6.2.1 示例:打印矩形的面积
6.2.2 通过派生 trait 来打印结构体的内容
#[derive(Debug)]
:添加 debug 注解来实现打印结构体的内容dbg!
宏:一种使用 Debug 格式打印数值的方法。dbg!
宏接收一个表达式的所有权(与 println! 宏相反,后者接收的是引用),打印出代码中调用dbg!
宏时所在的文件和行号,以及该表达式的结果值,并返回该值的所有权dbg!
宏中也可以传入引用,来防止其获取所有权
6.3 方法(method)
6.3.1 定义方法
.
语法:在一个实例上调用方法(因此,这类方法的第一个参数为self: &Self
,通常含有引用&
符号来防止获取所有权)
6.3.2 与结构体字段同名的方法
- 读取:
&self
- 修改:
&mut self
- 获取所有权:
self
6.3.3 带有多个参数的方法
6.3.4 多个 impl 块
6.3.5 关联函数(::)
::
语法:用于关联函数和模块创建的命名空间- 应用:(不是方法的)关联函数经常被用作返回一个结构体新实例的构造函数,这些函数的名称通常为
new
- 举例:在 String 类型上定义的
String::from
函数