use jasn_core::de;
use serde::de::Deserialize;
use crate::{Value, parser};
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("Parse error: {0}")]
ParseError(#[from] parser::Error),
#[error("Deserialization error: {0}")]
DeserializationError(#[from] de::Error),
}
pub type Result<T> = std::result::Result<T, Error>;
pub fn from_str<T>(s: &str) -> Result<T>
where
T: for<'de> Deserialize<'de>,
{
let value = parser::parse(s)?;
Ok(de::from_value(&value)?)
}
pub fn from_value<'de, T>(value: &'de Value) -> Result<T>
where
T: Deserialize<'de>,
{
Ok(de::from_value(value)?)
}