请描述 Rust 语言中结构体的定义与使用方法,并解释 impl 关键字在结构体上下文中的功能。
考察说明
考查对 Rust 结构体定义、实例化及方法实现的掌握程度。
回答思路
- 【回答框架 1】在 Rust 中,结构体通过 struct 关键字定义,可定义具名字段(如 struct User { name: String, age: u8 })或元组结构体(如 struct Point(i32, i32)),以及单元结构体用于类型标记。
- 【回答框架 2】实例化结构体需要为所有字段赋值,使用点语法访问字段;若部分字段需要修改,需将实例声明为 mut。可使用结构体更新语法 .. 从其他实例复制剩余字段。
- 【回答框架 3】impl 块用于为结构体定义关联函数(如构造函数)和方法;方法第一个参数可以是 self、&self 或 &mut self,表示调用时的所有权或借用方式。
- 【回答框架 4】impl 块还可以定义关联函数(不带 self),如 User::new(...),通过 :: 调用;Rust 允许对同一结构体有多个 impl 块。
- 【回答框架 5】方法体内可以访问字段并进行计算,其所有权规则遵循 Rust 的所有权系统,避免悬垂引用和数据竞争。
- 【关键点 1】结构体使用 struct 关键字定义,字段默认私有,需通过 pub 或结构体可见性控制。
- 【关键点 2】impl 关键字用于实现方法,可定义无 self 的关联函数和带 self 的方法。
- 【关键点 3】可变实例需声明 mut 才能修改字段。
- 【关键点 4】结构体更新语法 .. 可用于简便复制剩余字段。
- 【易错点 1】误认为结构体字段默认是公开的,需注意可见性规则。
- 【易错点 2】方法中错误使用 self 而不借用,导致所有权移动。
- 【易错点 3】忽略结构体生命周期标注,可能导致引用泄漏或编译错误。