From acbca45c87b3f1b1f578f0720952dc92c70f4a9d Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 27 Nov 2025 10:43:27 +0100 Subject: [PATCH] More `let` bindings to ensure no field is forgotten in `bincode::Encode` impls --- src/db/types/version.rs | 13 ++++++++++--- src/utils/cargo_metadata.rs | 17 ++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/db/types/version.rs b/src/db/types/version.rs index f0ca2b8a2..396c2de26 100644 --- a/src/db/types/version.rs +++ b/src/db/types/version.rs @@ -45,9 +45,16 @@ mod version_impl { &self, encoder: &mut E, ) -> Result<(), bincode::error::EncodeError> { - self.0.major.encode(encoder)?; - self.0.minor.encode(encoder)?; - self.0.patch.encode(encoder)?; + let Self(semver::Version { + major, + minor, + patch, + pre: _, + build: _, + }) = self; + major.encode(encoder)?; + minor.encode(encoder)?; + patch.encode(encoder)?; bincode::Encode::encode(self.0.pre.as_str(), encoder)?; bincode::Encode::encode(self.0.build.as_str(), encoder)?; Ok(()) diff --git a/src/utils/cargo_metadata.rs b/src/utils/cargo_metadata.rs index e432e5620..370dccd13 100644 --- a/src/utils/cargo_metadata.rs +++ b/src/utils/cargo_metadata.rs @@ -140,13 +140,20 @@ impl bincode::Encode for Dependency { &self, encoder: &mut E, ) -> Result<(), bincode::error::EncodeError> { - self.name.encode(encoder)?; + let Self { + name, + req, + kind, + rename, + optional, + } = self; + name.encode(encoder)?; // FIXME: VersionReq does not implement Encode, so we serialize it to string // Could be fixable by wrapping VersionReq in a newtype - self.req.to_string().encode(encoder)?; - self.kind.encode(encoder)?; - self.rename.encode(encoder)?; - self.optional.encode(encoder)?; + req.to_string().encode(encoder)?; + kind.encode(encoder)?; + rename.encode(encoder)?; + optional.encode(encoder)?; Ok(()) } }