Skip to content

结构体

struct 聚合相关字段。字段默认私有,即使类型是 pub,外部要读写也得单独标 pub

rust
struct User {
    id: u64,
    name: String,
}

let user = User {
    id: 1,
    name: String::from("ada"),
};

元组结构体只有位置字段,适合 newtype。单元结构体没有字段,适合标记类型。

rust
struct UserId(u64);
struct Anonymous;

更新语法用 .. 从另一个实例填充剩余字段;被 move 的字段会使源实例部分失效。

impl

方法和关联函数写在 impl 块里。第一个参数是 self&self&mut self 的是方法;没有 self 的是关联函数,通常当构造器用:

rust
impl User {
    fn new(id: u64, name: String) -> Self {
        Self { id, name }
    }

    fn name(&self) -> &str {
        &self.name
    }
}

派生

字段能直接推出的行为用 derive,不必手写:

rust
#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
struct UserId(u64);

Debug{:?}Clone 显式复制,PartialEq / Eq 做相等比较,Hash 作 Map 键,Default 提供默认值。展示给用户时再实现 Display

参考

基于 MIT 许可发布