[][src]Module grid_sdk::error

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 grid_sdk::error::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 grid_sdk::error::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.

ResourceTemporarilyUnavailableError

An error which is returned when an underlying resource is unavailable.

Enums

ConstraintViolationType

The type of constraint violation that caused the error