1 个不稳定版本

0.1.0 2024年2月9日

#1138数据结构

Apache-2.0

32KB
395

Errling

概述

Errling是一组内在有用的错误。

资源

以下资源可用于Errling

许可证

Errling遵循Apache License Version 2.0软件许可证。


lib.rs:

在整个库中使用的常用基本错误集合。

本模块中的错误旨在单独使用或作为更复杂错误enum的一部分。

示例

从函数返回错误

函数可以单独返回如InternalError这样的错误。

use std::fs;

use errling::InternalError;

fn check_path(path: &str) -> Result<bool, InternalError> {
    let metadata = fs::metadata(path).map_err(|e| InternalError::from_source(Box::new(e)))?;
    Ok(metadata.is_file())
}

构建复杂错误

InternalError这样的错误可以通过定义一个enum来构建更复杂的错误。

use std::error;
use std::fmt;
use std::fs;

use errling::InternalError;

#[derive(Debug)]
enum MyError {
    InternalError(InternalError),
    MissingFilenameExtension,
}

impl error::Error for MyError {}

impl fmt::Display for MyError {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match self {
            MyError::InternalError(e) => write!(f, "{}", e),
            MyError::MissingFilenameExtension => write!(f, "Missing filename extension"),
        }
    }
}

fn check_path(path: &str) -> Result<bool, MyError> {
    match !path.ends_with(".md") {
        true => Err(MyError::MissingFilenameExtension),
        false => {
            let metadata = fs::metadata(path).map_err(|e| MyError::InternalError(InternalError::from_source(Box::new(e))))?;
            Ok(metadata.is_file())
        }
    }
}

无运行时依赖

功能