主题
结构体
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。
