Crate errling

Source
Expand description

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())
        }
    }
}

Structs§

ConstraintViolationError
An error which is returned because of a database constraint violation.
InternalError
An error which is returned for reasons internal to the function.
InvalidArgumentError
An error returned when an argument passed to a function does not conform to the expected format.
InvalidStateError
An error returned when an operation cannot be completed because the state of the underlying struct is inconsistent.
ResourceTemporarilyUnavailableError
An error which is returned when an underlying resource is unavailable.

Enums§

ConstraintViolationType
The type of constraint violation that caused the error