MST

星途 面试题库

面试题:Rust字符串错误处理的自定义错误类型

假设你正在开发一个涉及大量字符串操作的Rust程序,要求你自定义一个字符串相关的错误类型,并在字符串解析失败、字符串长度不符合预期等场景下使用这个自定义错误类型进行错误处理。请编写相应代码示例,展示自定义错误类型的定义、错误的抛出与捕获。
11.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 自定义字符串相关的错误类型
#[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),
    }
}