libbfio-rs 0.2.5

Rust bindings for libbfio (https://github.com/libyal/libbfio)
use failure::Fail;

use std::ffi::{FromBytesWithNulError, NulError};
use std::string::FromUtf8Error;
use std::io;

#[derive(Fail, Debug)]
pub enum Error {
    #[fail(display = "Failed to convert date {}", _0)]
    FailedToConvertDate(#[cause] chrono::ParseError),
    #[fail(display = "AttributeType has no variant {}", _0)]
    UnknownAttributeEnumVariant(u32),
    #[fail(display = "String is invalid UTF-8: {}", _0)]
    StringContainsInvalidUTF8(#[cause] FromUtf8Error),
    #[fail(display = "String is invalid UTF-8: {}", _0)]
    FailedToConvertFromBytes(#[cause] FromBytesWithNulError),
    #[fail(display = "String contains NUL where is it not allowed: {}", _0)]
    StringContainsNul(#[cause] NulError),
    #[fail(display = "Failed to open file: {}", _0)]
    FailedToOpenFile(#[cause] io::Error),
    #[fail(display = "An FFI error has occurred: {}", _0)]
    FFI(String),
    #[fail(display = "An unexpected error has occurred: {}", _0)]
    Other(String),
}