summaryrefslogtreecommitdiff
path: root/serde_v8/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'serde_v8/error.rs')
-rw-r--r--serde_v8/error.rs41
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 {}