use super::ValueString;
use std::borrow::Cow;
impl From<String> for ValueString {
fn from(val: String) -> Self {
ValueString(Some(val))
}
}
impl From<&str> for ValueString {
fn from(val: &str) -> Self {
val.to_string().into()
}
}
impl From<Cow<'_, str>> for ValueString {
fn from(val: Cow<'_, str>) -> Self {
val.into_owned().into()
}
}
impl<T> From<&T> for ValueString
where
T: Into<ValueString> + Clone,
{
fn from(val: &T) -> Self {
val.clone().into()
}
}
impl<T> From<Option<T>> for ValueString
where
T: Into<ValueString>,
{
fn from(val: Option<T>) -> Self {
match val {
Some(value) => value.into(),
None => ValueString(None),
}
}
}
impl TryFrom<ValueString> for Option<String> {
type Error = crate::Error;
fn try_from(value: ValueString) -> Result<Self, Self::Error> {
Ok(value.0)
}
}
impl TryFrom<ValueString> for String {
type Error = crate::Error;
fn try_from(value: ValueString) -> Result<Self, Self::Error> {
match value.0 {
Some(v) => Ok(v),
None => Err(crate::Error::Message("Value is None!".into())),
}
}
}