pub enum DecodingError {
    IoError(Error),
    Format(FormatError),
    Parameter(ParameterError),
    LimitsExceeded,
}
Expand description

Any kind of error during PNG decoding.

This enumeration provides a very rough analysis on the origin of the failure. That is, each variant corresponds to one kind of actor causing the error. It should not be understood as a direct blame but can inform the search for a root cause or if such a search is required.

Variants

IoError(Error)

An error in IO of the underlying reader.

Format(FormatError)

The input image was not a valid PNG.

There isn’t a lot that can be done here, except if the program itself was responsible for creating this image then investigate the generator. This is internally implemented with a large Enum. If You are interested in accessing some of the more exact information on the variant then we can discuss in an issue.

Parameter(ParameterError)

An interface was used incorrectly.

This is used in cases where it’s expected that the programmer might trip up and stability could be affected. For example when:

  • The decoder is polled for more animation frames despite being done (or not being animated in the first place).
  • The output buffer does not have the required size.

As a rough guideline for introducing new variants parts of the requirements are dynamically derived from the (untrusted) input data while the other half is from the caller. In the above cases the number of frames respectively the size is determined by the file while the number of calls

If you’re an application you might want to signal that a bug report is appreciated.

LimitsExceeded

The image would have required exceeding the limits configured with the decoder.

Note that Your allocations, e.g. when reading into a pre-allocated buffer, is NOT considered part of the limits. Nevertheless, required intermediate buffers such as for singular lines is checked against the limit.

Note that this is a best-effort basis.

Trait Implementations

Formats the value using the given formatter. Read more

Formats the value using the given formatter. Read more

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

The lower-level source of this error, if any. Read more

🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred. Read more

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

Performs the conversion.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Converts the given value to a String. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.