// 自定义字符串相关的错误类型
#[derive(Debug)]
enum StringError {
ParseError,
LengthMismatch(usize, usize),
}
// 模拟一个字符串解析函数,可能会失败
fn parse_string(s: &str) -> Result<(), StringError> {
if s.len() != 5 {
return Err(StringError::LengthMismatch(s.len(), 5));
}
match s.parse::<i32>() {
Ok(_) => Ok(()),
Err(_) => Err(StringError::ParseError),
}
}
fn main() {
let test_str1 = "12345";
let test_str2 = "abcde";
let test_str3 = "123";
match parse_string(test_str1) {
Ok(_) => println!("{} 解析成功", test_str1),
Err(e) => println!("解析 {} 失败: {:?}", test_str1, e),
}
match parse_string(test_str2) {
Ok(_) => println!("{} 解析成功", test_str2),
Err(e) => println!("解析 {} 失败: {:?}", test_str2, e),
}
match parse_string(test_str3) {
Ok(_) => println!("{} 解析成功", test_str3),
Err(e) => println!("解析 {} 失败: {:?}", test_str3, e),
}
}