结构体与枚举

**结构体(struct)**把多个有名字的字段组合为一种类型;**枚举(enum)**表示「多选一」的变体集合。二者均可带 泛型与Traitimpl模式匹配


结构体三种形态

形态语法要点用途
具名字段struct User { id: u32, name: String }最常见
元组结构体struct Point(i32, i32)简单包装 / newtype
单元结构体struct Marker;零大小类型、标记

字段可修改性由整个绑定的 mut 决定(let mut u: User),而非单个字段关键字。


枚举 enum

enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
}
  • 变体可无数据元组式类结构体
  • 代数数据类型Option<T>Result<T, E> 是标准库枚举,见 错误处理

方法语法

impl User {
    fn new(id: u32, name: String) -> Self { ... }
    fn rename(&mut self, n: String) { self.name = n; }
}
  • self / &self / &mut self:所有权/借用与 借用与引用 一致。
  • 关联函数:首参非 self,如 User::new(无实例时调用)。

impl Trait for Type

为实现某 泛型与Trait 而写:

impl std::fmt::Display for User { ... }

与所有权

嵌套的 StringVec 随外层 struct 整体 move部分移动后,原绑定可能不能再整体使用(但未被移动的字段仍可能可用——注意部分移动规则)。


相关链接