use {
crate::*,
serde::{
Serialize,
de::DeserializeOwned,
},
};
pub trait IQ {
fn extract_primitive<P: IqPath>(
&self,
path: P,
) -> Option<String>;
fn extract_json<P: IqPath>(
&self,
path: P,
) -> Option<String>;
fn extract_json_pretty<P: IqPath>(
&self,
path: P,
) -> Option<String>;
fn extract_value<P: IqPath, V: DeserializeOwned>(
&self,
path: P,
) -> Result<Option<V>, IqError>;
fn extract_size<P: IqPath>(
&self,
path: P,
) -> Option<usize>;
}
impl<T> IQ for T
where
T: Serialize,
{
fn extract_primitive<P: IqPath>(
&self,
path: P,
) -> Option<String> {
extract_primitive(self, path)
}
fn extract_json<P: IqPath>(
&self,
path: P,
) -> Option<String> {
extract_json(self, path)
}
fn extract_json_pretty<P: IqPath>(
&self,
path: P,
) -> Option<String> {
extract_json(self, path)
}
fn extract_value<P: IqPath, V: DeserializeOwned>(
&self,
path: P,
) -> Result<Option<V>, IqError> {
extract_value(self, path)
}
fn extract_size<P: IqPath>(
&self,
path: P,
) -> Option<usize> {
extract_size(self, path)
}
}