diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-03-26 03:36:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-25 22:36:46 -0400 |
commit | 3d2e05dc7b6735fe0b81ceb6fe469270da56aff4 (patch) | |
tree | 6f62852cb1ae3eee02ab51f7115703665ad232d1 /serde_v8/src/error.rs | |
parent | e7954413e16d5814db5da6389f8d6e0c328812aa (diff) |
Introduce serde_v8 (#9722)
Diffstat (limited to 'serde_v8/src/error.rs')
-rw-r--r-- | serde_v8/src/error.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/serde_v8/src/error.rs b/serde_v8/src/error.rs new file mode 100644 index 000000000..effec4138 --- /dev/null +++ b/serde_v8/src/error.rs @@ -0,0 +1,43 @@ +use std::fmt::{self, Display}; + +use serde::{de, ser}; + +pub type Result<T> = std::result::Result<T, Error>; + +#[derive(Clone, Debug, PartialEq)] +pub enum Error { + Message(String), + + ExpectedBoolean, + ExpectedInteger, + ExpectedString, + ExpectedNull, + ExpectedArray, + ExpectedMap, + ExpectedEnum, + + LengthMismatch, +} + +impl ser::Error for Error { + fn custom<T: Display>(msg: T) -> Self { + Error::Message(msg.to_string()) + } +} + +impl de::Error for Error { + fn custom<T: Display>(msg: T) -> Self { + Error::Message(msg.to_string()) + } +} + +impl Display for Error { + fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result { + match self { + Error::Message(msg) => formatter.write_str(msg), + err => formatter.write_str(format!("serde_v8 error: {:?}", err).as_ref()), + } + } +} + +impl std::error::Error for Error {} |