Merge pull request #2592 from dtolnay/remotenonexhaustive

Fix "cannot move out of *self which is behind a shared reference"
This commit is contained in:
David Tolnay
2023-08-20 21:40:37 -07:00
committed by GitHub
2 changed files with 12 additions and 4 deletions
+2 -2
View File
@@ -409,9 +409,9 @@ fn serialize_enum(params: &Parameters, variants: &[Variant], cattrs: &attr::Cont
}) })
.collect(); .collect();
if cattrs.non_exhaustive() { if cattrs.remote().is_some() && cattrs.non_exhaustive() {
arms.push(quote! { arms.push(quote! {
unrecognized => _serde::__private::Err(_serde::ser::Error::custom(_serde::__private::ser::CannotSerializeVariant(unrecognized))), ref unrecognized => _serde::__private::Err(_serde::ser::Error::custom(_serde::__private::ser::CannotSerializeVariant(unrecognized))),
}); });
} }
+10 -2
View File
@@ -127,7 +127,7 @@ struct Test {
enum_concrete: remote::EnumGeneric<u8>, enum_concrete: remote::EnumGeneric<u8>,
#[serde(with = "ErrorKindDef")] #[serde(with = "ErrorKindDef")]
io_error_kind: std::io::ErrorKind, io_error_kind: ErrorKind,
} }
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
@@ -200,8 +200,16 @@ enum EnumConcrete {
Variant(u8), Variant(u8),
} }
#[derive(Debug)]
enum ErrorKind {
NotFound,
PermissionDenied,
#[allow(dead_code)]
ConnectionRefused,
}
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
#[serde(remote = "std::io::ErrorKind")] #[serde(remote = "ErrorKind")]
#[non_exhaustive] #[non_exhaustive]
enum ErrorKindDef { enum ErrorKindDef {
NotFound, NotFound,