Rust 结构体、方法与错误处理
目录
结构体让你把数据组织成「有意义的对象」,而 Rust 用 Result / Option 把「可能出错」写进类型里,而不是靠异常偷偷崩溃。
定义结构体与方法
struct User {
name: String,
age: u32,
}
impl User {
// 关联函数(类似构造器)
fn new(name: &str, age: u32) -> User {
User { name: name.to_string(), age }
}
// 方法:第一个参数是 self
fn greet(&self) -> String {
format!("你好,我是 {},{} 岁", self.name, self.age)
}
}
fn main() {
let u = User::new("小明", 18);
println!("{}", u.greet());
}错误处理:Result
可能失败的函数返回 Result<T, E>:
use std::num::ParseIntError;
fn parse_age(s: &str) -> Result<u32, ParseIntError> {
s.parse::<u32>()
}
fn main() {
match parse_age("20") {
Ok(age) => println!("年龄 {}", age),
Err(e) => println!("解析失败: {}", e),
}
}? 运算符把「出错就提前返回」写得极简:
fn parse_age(s: &str) -> Result<u32, ParseIntError> {
let age = s.parse::<u32>()?; // 出错自动 return Err
Ok(age)
}可能没有值:Option
fn find_even(nums: &[i32]) -> Option<i32> {
for &n in nums {
if n % 2 == 0 { return Some(n); }
}
None
}小结
struct+impl是组织数据与行为的基本单位。- 用
Result表达失败,Option表达缺失,类型系统逼你处理。 ?是错误传播的语法糖,写库代码离不开。
➡️ 5. 泛型与 Trait