Merge pull request #1079 from serde-rs/skipborrow

Ignore skipped fields when looking for borrowed lifetimes
This commit is contained in:
David Tolnay 2017-11-03 10:20:32 -07:00 committed by GitHub
commit e70bbd9dde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View File

@ -203,7 +203,9 @@ impl BorrowedLifetimes {
fn borrowed_lifetimes(cont: &Container) -> BorrowedLifetimes {
let mut lifetimes = BTreeSet::new();
for field in cont.body.all_fields() {
lifetimes.extend(field.attrs.borrowed_lifetimes().iter().cloned());
if !field.attrs.skip_deserializing() {
lifetimes.extend(field.attrs.borrowed_lifetimes().iter().cloned());
}
}
if lifetimes.iter().any(|b| b.ident == "'static") {
BorrowedLifetimes::Static

View File

@ -511,6 +511,14 @@ fn test_gen() {
Tuple(&'a str, &'static str),
Newtype(&'static str),
}
#[derive(Serialize, Deserialize)]
struct SkippedStaticStr {
#[serde(skip_deserializing)]
skipped: &'static str,
other: isize,
}
assert::<SkippedStaticStr>();
}
//////////////////////////////////////////////////////////////////////////