1 unstable release
0.1.0 | Feb 9, 2024 |
---|
#1504 in Data structures
32KB
395 lines
Errling
Overview
Errling is a collection of intrinsically useful errors.
Resources
The following resources are available for Errling:
License
Errling is licensed under the Apache License Version 2.0 software license.
lib.rs
:
Common set of basic errors used throughout the library.
The errors in this module are intended to be used by themselves or as part of a more complex
error enum
.
Examples
Returning an Error from a Function
A function may return an error such as InternalError
by itself.
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())
}
Constructing Complex Errors
Errors such as InternalError
may be used to construct more complicated errors by defining
an 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())
}
}
}