diff options
Diffstat (limited to 'serde_v8/error.rs')
-rw-r--r-- | serde_v8/error.rs | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/serde_v8/error.rs b/serde_v8/error.rs index e61385946..94ac3c0a5 100644 --- a/serde_v8/error.rs +++ b/serde_v8/error.rs @@ -1,56 +1,59 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use std::fmt::Display; -use std::fmt::{self}; - -use serde::de; -use serde::ser; pub type Result<T> = std::result::Result<T, Error>; -#[derive(Clone, Debug, Eq, PartialEq)] +#[derive(Clone, Debug, Eq, PartialEq, thiserror::Error)] #[non_exhaustive] pub enum Error { + #[error("{0}")] Message(String), + #[error("serde_v8 error: invalid type, expected: boolean")] ExpectedBoolean, + #[error("serde_v8 error: invalid type, expected: integer")] ExpectedInteger, + #[error("serde_v8 error: invalid type, expected: number")] ExpectedNumber, + #[error("serde_v8 error: invalid type, expected: string")] ExpectedString, + #[error("serde_v8 error: invalid type, expected: array")] ExpectedArray, + #[error("serde_v8 error: invalid type, expected: map")] ExpectedMap, + #[error("serde_v8 error: invalid type, expected: enum")] ExpectedEnum, + #[error("serde_v8 error: invalid type, expected: object")] ExpectedObject, + #[error("serde_v8 error: invalid type, expected: buffer")] ExpectedBuffer, + #[error("serde_v8 error: invalid type, expected: detachable")] ExpectedDetachable, + #[error("serde_v8 error: invalid type, expected: external")] ExpectedExternal, + #[error("serde_v8 error: invalid type, expected: bigint")] ExpectedBigInt, + #[error("serde_v8 error: invalid type, expected: utf8")] ExpectedUtf8, + #[error("serde_v8 error: invalid type, expected: latin1")] ExpectedLatin1, + #[error("serde_v8 error: unsupported type")] UnsupportedType, - LengthMismatch, + + #[error("serde_v8 error: length mismatch, got: {0}, expected: {1}")] + LengthMismatch(usize, usize), } -impl ser::Error for Error { +impl serde::ser::Error for Error { fn custom<T: Display>(msg: T) -> Self { Error::Message(msg.to_string()) } } -impl de::Error for Error { +impl serde::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 {} |