[][src]Enum pelite::Error

pub enum Error {
    Null,
    Bounds,
    ZeroFill,
    Unmapped,
    Misaligned,
    BadMagic,
    PeMagic,
    Insanity,
    Invalid,
    Overflow,
    Encoding,
}

Errors while parsing the PE binary.

Variants

Null

Null address.

Bounds

Out of bounds.

Catch-all for bounds check errors.

ZeroFill

Data is not available.

Can happen when referencing data in PeFile instances.

Sections can be shorter than stored on disk, the remaining bytes will default to zeroes when loaded by the system. Since these zeroes would just be a waste of space, they are not present in the binaries on disk. This error happens when attempting to get a reference to such zero filled data.

Unmapped

Data is not available.

Can happen when referencing data in PeView instances.

Sections can have excess in their raw data which won't be mapped when loaded by the system. This error happens when attempting to get a reference to such unmapped raw data. Sometimes this kind of excess is called an overlay.

Misaligned

Address is misaligned.

BadMagic

Expected magic number does not match.

PeMagic

Trying to load a PE32 file with a PE32+ parser or vice versa.

Insanity

Sanity check failed.

Some value was so far outside its typical range, while not technically incorrect, probably indicating something went wrong. If this error is encountered legitimately, create an issue or file a PR to relax the artificial restrictions.

Invalid

Invalid data.

Structured data was found which simply isn't valid. Catch-all for errors which don't fall under other errors.

Overflow

Overflow error.

Catch-all for overflow and underflow errors.

Encoding

Encoding error.

Catch-all for string related errors such as lacking a nul terminator.

Methods

impl Error[src]

pub fn is_null(self) -> bool[src]

Returns if the error variant is Null.

Useful in match guards where Null should be handled as a non-error case.

fn with_default(result: pelite::Result<i32>) -> pelite::Result<i32> {
	let i = match result {
		Ok(i) => i,
		// Avoids a more verbose comparison with pelite::Error::Null
		Err(err) if err.is_null() => 0,
		Err(err) => return Err(err),
	};
	Ok(i)
}

assert_eq!(with_default(Err(pelite::Error::Null)), Ok(0));

Trait Implementations

impl Clone for Error[src]

impl Copy for Error[src]

impl Debug for Error[src]

impl Display for Error[src]

impl Eq for Error[src]

impl Error for Error[src]

impl From<Error> for FindError[src]

impl Hash for Error[src]

impl PartialEq<Error> for Error[src]

impl Serialize for Error[src]

impl StructuralEq for Error[src]

impl StructuralPartialEq for Error[src]

Auto Trait Implementations

impl RefUnwindSafe for Error

impl Send for Error

impl Sync for Error

impl Unpin for Error

impl UnwindSafe for Error

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.