summaryrefslogtreecommitdiff
path: root/src/serde.rs
diff options
context:
space:
mode:
authorKim Altintop <kim@eagain.io>2023-01-09 13:18:33 +0100
committerKim Altintop <kim@eagain.io>2023-01-09 13:18:33 +0100
commitd2f423521ec76406944ad83098ec33afe20c692b (patch)
treeafd86bcb088eebdd61ba4e52fa666ff0f41c42a2 /src/serde.rs
This is it
Squashed commit of all the exploration history. Development starts here. Signed-off-by: Kim Altintop <kim@eagain.io>
Diffstat (limited to 'src/serde.rs')
-rw-r--r--src/serde.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/serde.rs b/src/serde.rs
new file mode 100644
index 0000000..cbbf6a9
--- /dev/null
+++ b/src/serde.rs
@@ -0,0 +1,28 @@
+// Copyright © 2022 Kim Altintop <kim@eagain.io>
+// SPDX-License-Identifier: GPL-2.0-only WITH openvpn-openssl-exception
+
+pub mod display {
+ use std::{
+ fmt,
+ str::FromStr,
+ };
+
+ pub fn serialize<T, S>(v: &T, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ T: ToString,
+ S: serde::Serializer,
+ {
+ serializer.serialize_str(&v.to_string())
+ }
+
+ #[allow(unused)]
+ pub fn deserialize<'de, T, D>(deserializer: D) -> Result<T, D::Error>
+ where
+ T: FromStr,
+ T::Err: fmt::Display,
+ D: serde::Deserializer<'de>,
+ {
+ let s: &str = serde::Deserialize::deserialize(deserializer)?;
+ s.parse().map_err(serde::de::Error::custom)
+ }
+}