diff --git a/src/types/number_or_string.rs b/src/types/number_or_string.rs index 2bb1531..4843cd2 100644 --- a/src/types/number_or_string.rs +++ b/src/types/number_or_string.rs @@ -1,3 +1,4 @@ +use std::borrow::Cow; use std::fmt::Debug; #[cfg(feature = "serde")] @@ -57,6 +58,30 @@ impl From for JsValue { } } +impl From for NumberOrString { + fn from(value: i64) -> Self { + NumberOrString::Number(value) + } +} + +impl From for NumberOrString { + fn from(value: String) -> Self { + NumberOrString::Text(value) + } +} + +impl From<&str> for NumberOrString { + fn from(value: &str) -> Self { + NumberOrString::Text(value.to_string()) + } +} + +impl<'a> From> for NumberOrString { + fn from(value: Cow<'a, str>) -> Self { + NumberOrString::Text(value.into_owned()) + } +} + /// Error type for deserialisation failures #[cfg(feature = "wasm")] #[derive(Debug, Clone)] @@ -85,5 +110,7 @@ impl std::error::Error for DeserialisationError {} #[cfg(feature = "wasm")] impl From for JsValue { - fn from(error: DeserialisationError) -> Self { JsValue::from_str(&error.message) } + fn from(error: DeserialisationError) -> Self { + JsValue::from_str(&error.message) + } }