1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use libyal_rs_common::ffi::AsTypeRef;
use crate::ffi_error::{LibfsntfsError, LibfsntfsErrorRef};
use libfsntfs_sys::*;
use failure::Fail;
use std::convert::TryFrom;
use std::ffi::{c_void, FromBytesWithNulError, NulError};
use std::fmt::{self, Debug, Display, Formatter};
use std::marker::PhantomData;
use std::ops::{Deref, DerefMut};
use std::os::raw::c_char;
use std::str::Utf8Error;
use std::string::FromUtf8Error;

#[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 = "An FFI error has occurred: {}", _0)]
    FFI(String),
    #[fail(display = "An unexpected error has occurred: {}", _0)]
    Other(String),
}