apng_encoder/apng/
errors.rs1
2use failure::Fail;
3use std::io::Error as IOError;
4
5
6pub type ApngResult<T> = Result<T, ApngError>;
7
8
9
10#[derive(Fail, Debug)]
11pub enum ApngError {
12 #[fail(display = "Write a default image at first")]
13 DefaultImageNotAtFirst,
14 #[fail(display = "Invalid argument")]
15 InvalidArgument,
16 #[fail(display = "Invalid color")]
17 InvalidColor,
18 #[fail(display = "Invalid default image size or offset")]
19 InvalidDefaultImageRectangle,
20 #[fail(display = "IO error: {}", 0)]
21 Io(IOError),
22 #[fail(display = "Default image already exists")]
23 MulitiDefaultImage,
24 #[fail(display = "Not enough frames: expected={}, actual={}", 0, 1)]
25 NotEnoughFrames(usize, usize),
26 #[fail(display = "Not enough argument")]
27 NotEnoughArgument,
28 #[fail(display = "Too large image")]
29 TooLargeImage,
30 #[fail(display = "Too many frames: expected={}, actual={}", 0, 1)]
31 TooManyFrames(usize, usize),
32 #[fail(display = "Too small image")]
33 TooSmallImage,
34}
35
36macro_rules! define_error {
37 ($source:ty, $kind:tt) => {
38 impl From<$source> for ApngError {
39 fn from(error: $source) -> ApngError {
40 ApngError::$kind(error)
41 }
42 }
43 }
44}
45
46define_error!(std::io::Error, Io);