summaryrefslogtreecommitdiff
path: root/src/de/seed.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/seed.rs')
-rw-r--r--src/de/seed.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/de/seed.rs b/src/de/seed.rs
new file mode 100644
index 0000000..13b7ea4
--- /dev/null
+++ b/src/de/seed.rs
@@ -0,0 +1,19 @@
+use de::{Deserialize, DeserializeSeed, Deserializer};
+
+/// A DeserializeSeed helper for implementing deserialize_in_place Visitors.
+///
+/// Wraps a mutable reference and calls deserialize_in_place on it.
+pub struct InPlaceSeed<'a, T: 'a>(pub &'a mut T);
+
+impl<'a, 'de, T> DeserializeSeed<'de> for InPlaceSeed<'a, T>
+where
+ T: Deserialize<'de>,
+{
+ type Value = ();
+ fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
+ where
+ D: Deserializer<'de>,
+ {
+ T::deserialize_in_place(deserializer, self.0)
+ }
+}