diff options
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | mullvad-version/Cargo.toml | 1 | ||||
| -rw-r--r-- | mullvad-version/src/lib.rs | 21 |
3 files changed, 23 insertions, 0 deletions
diff --git a/Cargo.lock b/Cargo.lock index 76b4c96730..4afca015ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2699,6 +2699,7 @@ name = "mullvad-version" version = "0.0.0" dependencies = [ "regex-lite", + "serde", ] [[package]] diff --git a/mullvad-version/Cargo.toml b/mullvad-version/Cargo.toml index 3bb0f25afa..e7a75f93bc 100644 --- a/mullvad-version/Cargo.toml +++ b/mullvad-version/Cargo.toml @@ -18,3 +18,4 @@ workspace = true [dependencies] regex-lite = "0.1" +serde = { workspace = true, optional = true } diff --git a/mullvad-version/src/lib.rs b/mullvad-version/src/lib.rs index a0a78e8a6a..180e12d96c 100644 --- a/mullvad-version/src/lib.rs +++ b/mullvad-version/src/lib.rs @@ -160,6 +160,27 @@ impl FromStr for Version { } } +#[cfg(feature = "serde")] +impl<'de> serde::Deserialize<'de> for Version { + fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> + where + D: serde::Deserializer<'de>, + { + let s = String::deserialize(deserializer)?; + FromStr::from_str(&s).map_err(serde::de::Error::custom) + } +} + +#[cfg(feature = "serde")] +impl serde::Serialize for Version { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + serializer.serialize_str(&self.to_string()) + } +} + #[cfg(test)] mod tests { use super::*; |
