【Rust】6. 结构体与方法

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 函数

在这里插入图片描述

6.4 小结

在这里插入图片描述

你可能感兴趣的:(Rust,rust,开发语言,后端)