derive EBML errors via custom_error!{}

This commit is contained in:
Tangent 128 2019-01-02 21:45:44 -05:00
parent e92ffb06a7
commit 6895cde14a
3 changed files with 16 additions and 40 deletions

7
Cargo.lock generated
View File

@ -149,6 +149,11 @@ dependencies = [
"lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "custom_error"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "digest"
version = "0.8.1"
@ -1197,6 +1202,7 @@ version = "0.2.0"
dependencies = [
"bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"custom_error 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.28 (registry+https://github.com/rust-lang/crates.io-index)",
"http 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
"hyper 0.12.31 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1265,6 +1271,7 @@ dependencies = [
"checksum crossbeam-epoch 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "04c9e3102cc2d69cd681412141b390abd55a362afc1540965dad0ad4d34280b4"
"checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b"
"checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c"
"checksum custom_error 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c189751d60563837f66c7ebf87f6a6e4c101e937d54521e88620e89c79b8a2ad"
"checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
"checksum either 1.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5527cfe0d098f36e3f8839852688e63c8fff1c90b2b405aef730615f9a7bcf7b"

View File

@ -7,6 +7,7 @@ edition = "2018"
[dependencies]
bytes = "0.4.12"
clap = "2.33.0"
custom_error = "1.3.0"
futures = "0.1.28"
http = "0.1.17"
hyper = "0.12.31"

View File

@ -1,6 +1,5 @@
use bytes::{BigEndian, ByteOrder, BufMut};
use std::error::Error as ErrorTrait;
use std::fmt::{Display, Formatter, Result as FmtResult};
use custom_error::custom_error;
use std::io::{Cursor, Error as IoError, ErrorKind, Result as IoResult, Write, Seek, SeekFrom};
use futures::Async;
@ -8,46 +7,15 @@ pub const EBML_HEAD_ID: u64 = 0x0A45DFA3;
pub const DOC_TYPE_ID: u64 = 0x0282;
pub const VOID_ID: u64 = 0x6C;
#[derive(Debug, PartialEq)]
pub enum EbmlError {
CorruptVarint,
UnknownElementId,
UnknownElementLength,
CorruptPayload,
}
impl Display for EbmlError {
fn fmt(&self, f: &mut Formatter) -> FmtResult {
write!(f, "{}", self.description())
}
}
impl ErrorTrait for EbmlError {
fn description(&self) -> &str {
match self {
&EbmlError::CorruptVarint => "EBML Varint could not be parsed",
&EbmlError::UnknownElementId => "EBML element ID was \"unknown\"",
&EbmlError::UnknownElementLength => "EBML element length was \"unknown\" for an element not allowing that",
&EbmlError::CorruptPayload => "EBML element payload could not be parsed",
}
}
custom_error!{pub EbmlError
CorruptVarint = r#"EBML Varint could not be parsed"#,
UnknownElementId = r#"EBML element ID was "unknown"#,
UnknownElementLength = r#"EBML element length was "unknown" for an element not allowing that"#,
CorruptPayload = r#"EBML element payload could not be parsed"#,
}
#[derive(Debug, PartialEq)]
pub enum WriteError {
OutOfRange
}
impl Display for WriteError {
fn fmt(&self, f: &mut Formatter) -> FmtResult {
match self {
&WriteError::OutOfRange => write!(f, "EBML Varint out of range")
}
}
}
impl ErrorTrait for WriteError {
fn description(&self) -> &str {
match self {
&WriteError::OutOfRange => "EBML Varint out of range"
}
}
custom_error!{pub WriteError
OutOfRange = "EBML Varint out of range"
}
#[derive(Debug, PartialEq)]