quickjs_rusty/serde/
error.rsuse std::fmt::Display;
use serde::{de, ser};
use thiserror::Error as ThisError;
use crate::{ExecutionError, ValueError};
#[allow(missing_docs)]
#[derive(Debug, ThisError)]
pub enum Error {
#[error("{0}")]
Message(String),
#[error("circular reference detected")]
CircularReference,
#[error("end of file")]
Eof,
#[error("invalid syntax")]
Syntax,
#[error("expect boolean")]
ExpectedBoolean,
#[error("expect integer")]
ExpectedInteger,
#[error("expect float")]
ExpectedFloat,
#[error("expect string")]
ExpectedString,
#[error("expect null")]
ExpectedNull,
#[error("expect object")]
ExpectedObject,
#[error("expect array or object")]
ExpectedArrayOrObject,
#[error("expect array")]
ExpectedArray,
#[error("expect array comma")]
ExpectedArrayComma,
#[error("expect array end")]
ExpectedArrayEnd,
#[error("expect map")]
ExpectedMap,
#[error("expect map colon")]
ExpectedMapColon,
#[error("expect map comma")]
ExpectedMapComma,
#[error("expect map end")]
ExpectedMapEnd,
#[error("expect enum")]
ExpectedEnum,
#[error("trailing characters")]
TrailingCharacters,
#[error("big int overflow")]
BigIntOverflow,
#[error(transparent)]
ValueError(#[from] ValueError),
#[error(transparent)]
ExecutionError(#[from] ExecutionError),
#[error(transparent)]
IOError(#[from] std::io::Error),
#[error(transparent)]
Others(#[from] anyhow::Error),
}
pub type Result<T> = anyhow::Result<T, Error>;
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())
}
}