Haibo Huang | b308584 | 2021-02-09 17:58:09 -0800 | [diff] [blame] | 1 | use de::{Deserialize, DeserializeSeed, Deserializer}; |
| 2 | |
| 3 | /// A DeserializeSeed helper for implementing deserialize_in_place Visitors. |
| 4 | /// |
| 5 | /// Wraps a mutable reference and calls deserialize_in_place on it. |
| 6 | pub struct InPlaceSeed<'a, T: 'a>(pub &'a mut T); |
| 7 | |
| 8 | impl<'a, 'de, T> DeserializeSeed<'de> for InPlaceSeed<'a, T> |
| 9 | where |
| 10 | T: Deserialize<'de>, |
| 11 | { |
| 12 | type Value = (); |
| 13 | fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error> |
| 14 | where |
| 15 | D: Deserializer<'de>, |
| 16 | { |
| 17 | T::deserialize_in_place(deserializer, self.0) |
| 18 | } |
| 19 | } |