Checks for serialize_struct calls whose len argument does not match the number of
subsequent serialize_field calls.
The serde documentation is unclear on whether the len argument is meant to be a hint.
Even if it is just a hint, there’s no telling what real-world implementations will do with
that argument. Thus, ensuring that the argument is correct helps protect against
SerializeStruct implementations that expect it to be correct, even if such implementations
are only hypothetical.
let mut state = serializer.serialize_struct("Color", 1)?; // `len` is 1
state.serialize_field("r", &self.r)?;
state.serialize_field("g", &self.g)?;
state.serialize_field("b", &self.b)?;
state.end()
Use instead:
let mut state = serializer.serialize_struct("Color", 3)?; // `len` is 3
state.serialize_field("r", &self.r)?;
state.serialize_field("g", &self.g)?;
state.serialize_field("b", &self.b)?;
state.end()