Skip to content

Commit 65f6da4

Browse files
committed
Replace broken custom Deserialize impl with derive
I'm really not sure what compelled me to originally write this in 6fd385a. I'm 100% sure this is a copy of the derived code with `#[serde(untagged)]`, and I think when I do this sort of thing I'd usually edit something after copying it. But I can't find anything changed, and the derive seems to work fine? In any case, the handwritten code broke with the latest serde update because it referred to private inner parts, and that's not great.
1 parent ccf29dd commit 65f6da4

File tree

1 file changed

+2
-43
lines changed

1 file changed

+2
-43
lines changed

src/websocket/types/room/room_object_macros.rs

+2-43
Original file line numberDiff line numberDiff line change
@@ -49,53 +49,12 @@ pub(crate) mod vec_update {
4949
use super::Updatable;
5050

5151
/// Update structure for a Vec.
52-
#[derive(Debug, Clone)]
52+
#[derive(Debug, Clone, serde_derive::Deserialize)]
53+
#[serde(untagged)]
5354
pub(crate) enum VecUpdate<T> {
5455
Array(Vec<T>),
5556
PartialObj(VecPartialUpdate<T>),
5657
}
57-
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
58-
const _IMPL_DESERIALIZE_FOR_VecUpdate: () = {
59-
extern crate serde as _serde;
60-
impl<'de, T> _serde::Deserialize<'de> for VecUpdate<T>
61-
where
62-
T: _serde::Deserialize<'de>,
63-
{
64-
fn deserialize<__D>(__deserializer: __D) -> _serde::export::Result<Self, __D::Error>
65-
where
66-
__D: _serde::Deserializer<'de>,
67-
{
68-
let err1;
69-
let err2;
70-
let __content =
71-
<_serde::private::de::Content as Deserialize>::deserialize(__deserializer)?;
72-
match Result::map(
73-
Vec::<T>::deserialize(
74-
_serde::private::de::ContentRefDeserializer::<__D::Error>::new(&__content),
75-
),
76-
VecUpdate::Array,
77-
) {
78-
Ok(value) => return Ok(value),
79-
Err(e) => err1 = e,
80-
}
81-
match Result::map(
82-
VecPartialUpdate::<T>::deserialize(
83-
_serde::private::de::ContentRefDeserializer::<__D::Error>::new(&__content),
84-
),
85-
VecUpdate::PartialObj,
86-
) {
87-
Ok(value) => return Ok(value),
88-
Err(e) => err2 = e,
89-
}
90-
_serde::export::Err(_serde::de::Error::custom(format!(
91-
"data did not match any variant of \
92-
untagged enum VecUpdate (error for \
93-
Array: {}, error for PartialObj: {})",
94-
err1, err2
95-
)))
96-
}
97-
}
98-
};
9958

10059
#[derive(Debug, Clone)]
10160
pub struct VecPartialUpdate<T>(Vec<(u32, T)>);

0 commit comments

Comments
 (0)