1 个不稳定版本
0.1.0 | 2024年2月9日 |
---|
#1138 在 数据结构
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())
}
}
}