use datavalue::OwnedDataValue;
use crate::Result;
mod sealed {
pub trait Sealed {}
}
pub trait IntoLogic: sealed::Sealed {
fn into_owned_logic(self) -> Result<OwnedDataValue>;
}
impl sealed::Sealed for &str {}
impl IntoLogic for &str {
#[inline]
fn into_owned_logic(self) -> Result<OwnedDataValue> {
Ok(OwnedDataValue::from_json(self)?)
}
}
impl sealed::Sealed for &String {}
impl IntoLogic for &String {
#[inline]
fn into_owned_logic(self) -> Result<OwnedDataValue> {
Ok(OwnedDataValue::from_json(self.as_str())?)
}
}
impl sealed::Sealed for &OwnedDataValue {}
impl IntoLogic for &OwnedDataValue {
#[inline]
fn into_owned_logic(self) -> Result<OwnedDataValue> {
Ok(self.clone())
}
}
impl sealed::Sealed for OwnedDataValue {}
impl IntoLogic for OwnedDataValue {
#[inline]
fn into_owned_logic(self) -> Result<OwnedDataValue> {
Ok(self)
}
}
#[cfg(feature = "serde_json")]
impl sealed::Sealed for &serde_json::Value {}
#[cfg(feature = "serde_json")]
impl IntoLogic for &serde_json::Value {
#[inline]
fn into_owned_logic(self) -> Result<OwnedDataValue> {
Ok(crate::serde_bridge::owned_from_serde(self))
}
}