Skip to content

Commit dda070f

Browse files
committed
Fix borrow error on pre-NLL compilers
error[E0506]: cannot assign to `missing_content` because it is borrowed --> serde_derive/src/de.rs:1414:9 | 1388 | .filter_map(|(i, variant)| { | -------------- borrow of `missing_content` occurs here ... 1414 | / missing_content = quote! { 1415 | | match __field { 1416 | | #(#missing_content_arms)* 1417 | | #missing_content_fallthrough 1418 | | } 1419 | | }; | |_________^ assignment to borrowed `missing_content` occurs here error[E0502]: cannot borrow `missing_content_fallthrough` as immutable because it is also borrowed as mutable --> serde_derive/src/de.rs:1414:27 | 1388 | .filter_map(|(i, variant)| { | -------------- mutable borrow occurs here ... 1404 | missing_content_fallthrough = quote!(_ => #missing_content); | --------------------------- previous borrow occurs due to use of `missing_content_fallthrough` in closure ... 1414 | missing_content = quote! { | ___________________________^ 1415 | | match __field { 1416 | | #(#missing_content_arms)* 1417 | | #missing_content_fallthrough 1418 | | } 1419 | | }; | |_________^ immutable borrow occurs here ... 1622 | } | - mutable borrow ends here | = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
1 parent b97a183 commit dda070f

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

serde_derive/src/de.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1381,7 +1381,7 @@ fn deserialize_adjacently_tagged_enum(
13811381
_serde::export::Err(<__A::Error as _serde::de::Error>::missing_field(#content))
13821382
};
13831383
let mut missing_content_fallthrough = quote!();
1384-
let mut missing_content_arms = variants
1384+
let missing_content_arms = variants
13851385
.iter()
13861386
.enumerate()
13871387
.filter(|&(_, variant)| !variant.attrs.skip_deserializing())
@@ -1409,8 +1409,8 @@ fn deserialize_adjacently_tagged_enum(
14091409
__Field::#variant_index => #arm,
14101410
})
14111411
})
1412-
.peekable();
1413-
if missing_content_arms.peek().is_some() {
1412+
.collect::<Vec<_>>();
1413+
if !missing_content_arms.is_empty() {
14141414
missing_content = quote! {
14151415
match __field {
14161416
#(#missing_content_arms)*

0 commit comments

Comments
 (0)