MST
星途 面试题库

面试题:Rust自定义错误类型在泛型函数中的处理

编写一个泛型函数`process_data`,它接受一个`Result<T, E>`类型的参数,其中`E`是自定义错误类型`CustomError`。`CustomError`需要有两个变体:`NotFound`和`InvalidData`,分别表示数据未找到和数据无效的错误。在`process_data`函数中,当结果是`Err`时,根据`CustomError`的不同变体进行不同的处理,并返回一个合适的`Result`类型。请写出完整的代码。
50.1万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 定义自定义错误类型
#[derive(Debug)]
enum CustomError {
    NotFound,
    InvalidData,
}

// 泛型函数
fn process_data<T>(result: Result<T, CustomError>) -> Result<T, String> {
    match result {
        Ok(data) => Ok(data),
        Err(error) => match error {
            CustomError::NotFound => Err("数据未找到".to_string()),
            CustomError::InvalidData => Err("数据无效".to_string()),
        },
    }
}