Skip to content
A Rust library that provides a simple error
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.gitignore
.travis.yml
CHANGELOG.md
Cargo.toml
LICENSE-APACHE
LICENSE-MIT
LICENSE.md
README.md

README.md

simple-error

crates.io Documentation Build Status Coverage Status

simple-error is a Rust library that provides a simple Error type backed by a String. It is best used when all you care about the error is an error string.

Documentation

Usage

To use simple-error, first add this to your Cargo.toml:

[dependencies]
simple-error = "0.1"

Then add this to your crate root:

#[macro_use]
extern crate simple_error;

Now you can use simple-error in different ways:

You can use it simply as a string error type:

fn do_foo() -> Result<(), SimpleError> {
    SimpleError::new("cannot do foo")
}

You can use it to replace all error types if you only care about a string description:

fn do_bar() -> Result<(), SimpleError> {
    SimpleError::from(std::io::Error(io::ErrorKind::Other, "oh no"))
}

Or you can chain all the errors, and get a complete error description at the top level:

fn find_tv_remote() -> Result<(), SimpleError> {
    try_with!(std::fs::File::open("remotefile"), "failed to open remote file");
    Ok(())
}

fn turn_on_tv() -> Result<(), std::io::Error> {
    Ok(())
}

fn watch_tv() -> Result<(), SimpleError> {
    try_with!(find_tv_remote(), "tv remote not found");
    try_with!(turn_on_tv(), "cannot turn on tv");
    Ok(())
}

fn study() -> Result<(), SimpleError> {
    Ok(())
}

fn run() -> Result<(), SimpleError> {
    try!(study(), "cannot study");
    try!(watch_tv(), "cannot watch tv")
}

fn main() {
    if Err(e) = run() {
        println!("{}", e);
    }
}
// This prints out "cannot watch tv, tv remote not found, failed to open remote file, Text file busy" if the error is text file busy.
You can’t perform that action at this time.