summaryrefslogtreecommitdiffstats
path: root/vendor/hex/src/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/hex/src/error.rs')
-rw-r--r--vendor/hex/src/error.rs59
1 files changed, 59 insertions, 0 deletions
diff --git a/vendor/hex/src/error.rs b/vendor/hex/src/error.rs
new file mode 100644
index 0000000..ff7a3b5
--- /dev/null
+++ b/vendor/hex/src/error.rs
@@ -0,0 +1,59 @@
+use core::fmt;
+
+/// The error type for decoding a hex string into `Vec<u8>` or `[u8; N]`.
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub enum FromHexError {
+ /// An invalid character was found. Valid ones are: `0...9`, `a...f`
+ /// or `A...F`.
+ InvalidHexCharacter { c: char, index: usize },
+
+ /// A hex string's length needs to be even, as two digits correspond to
+ /// one byte.
+ OddLength,
+
+ /// If the hex string is decoded into a fixed sized container, such as an
+ /// array, the hex string's length * 2 has to match the container's
+ /// length.
+ InvalidStringLength,
+}
+
+#[cfg(feature = "std")]
+impl std::error::Error for FromHexError {}
+
+impl fmt::Display for FromHexError {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ match *self {
+ FromHexError::InvalidHexCharacter { c, index } => {
+ write!(f, "Invalid character {:?} at position {}", c, index)
+ }
+ FromHexError::OddLength => write!(f, "Odd number of digits"),
+ FromHexError::InvalidStringLength => write!(f, "Invalid string length"),
+ }
+ }
+}
+
+#[cfg(test)]
+// this feature flag is here to suppress unused
+// warnings of `super::*` and `pretty_assertions::assert_eq`
+#[cfg(feature = "alloc")]
+mod tests {
+ use super::*;
+ #[cfg(feature = "alloc")]
+ use alloc::string::ToString;
+ use pretty_assertions::assert_eq;
+
+ #[test]
+ #[cfg(feature = "alloc")]
+ fn test_display() {
+ assert_eq!(
+ FromHexError::InvalidHexCharacter { c: '\n', index: 5 }.to_string(),
+ "Invalid character '\\n' at position 5"
+ );
+
+ assert_eq!(FromHexError::OddLength.to_string(), "Odd number of digits");
+ assert_eq!(
+ FromHexError::InvalidStringLength.to_string(),
+ "Invalid string length"
+ );
+ }
+}