Commit Graph

778 Commits

Author SHA1 Message Date
David Tolnay
9e8f14816b
Add experiment to produce precompiled builds of serde_derive 2023-07-18 13:37:36 -07:00
David Tolnay
03da66c805
Release 1.0.171 2023-07-09 18:05:02 -07:00
David Tolnay
f75426f47e
Inline visitor_expr of unit struct deserialize impl 2023-07-09 18:03:58 -07:00
Baptiste de Montangon
89c8d85de9 allow Deserialize derive to handle generic unit structs 2023-07-10 01:31:40 +02:00
David Tolnay
6502838f27
Release 1.0.170 2023-07-09 11:17:30 -07:00
David Tolnay
8264e002a7
Reject suffixed string literals inside serde attrs 2023-07-09 11:13:24 -07:00
David Tolnay
3fb5e71c33
Release 1.0.169 2023-07-08 21:09:08 -07:00
David Tolnay
296db177e2
Pull in syn fix for issue 2414 2023-07-08 21:08:22 -07:00
David Tolnay
09b78b24e9
Release 1.0.168 2023-07-08 17:52:06 -07:00
David Tolnay
807bd20a64
Release 1.0.167 2023-07-06 16:25:48 -07:00
David Tolnay
ed9a140348
Merge pull request #2444 from Mingun/dedup
Simplify code for generation of struct deserializers
2023-07-06 16:25:15 -07:00
David Tolnay
92bfc8d3af
Merge pull request #2290 from Mingun/enum-tests-and-cleanup
Remove unused `impl` and unnecessary struct-wrapper around tuple
2023-07-06 16:02:27 -07:00
David Tolnay
fa0312ac45
More formatting of doc tests and example code 2023-07-06 15:56:47 -07:00
David Tolnay
0666fbfa20
Update documentation example code to 2021 edition 2023-07-06 15:17:05 -07:00
David Tolnay
d640b5624f
Add no-alloc category to the macro crate also 2023-07-03 14:05:32 -07:00
David Tolnay
48479e4bae
Release 1.0.166 2023-07-03 11:33:19 -07:00
David Tolnay
dcbc3e0162
Release 1.0.165 2023-07-03 04:21:59 -07:00
David Tolnay
0289d31724
Fix -Zminimal-versions build 2023-07-03 04:21:14 -07:00
David Tolnay
6b4e75520a
Resolve explicit_iter_loop pedantic clippy lint
error: it is more concise to loop over references to containers instead of using explicit iteration methods
        --> serde/src/private/de.rs:2761:22
         |
    2761 |         for entry in self.0.iter_mut() {
         |                      ^^^^^^^^^^^^^^^^^ help: to write this more concisely, try: `&mut *self.0`
         |
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop
         = note: `-D clippy::explicit-iter-loop` implied by `-D clippy::pedantic`

    error: it is more concise to loop over references to containers instead of using explicit iteration methods
       --> serde_derive/src/internals/check.rs:202:20
        |
    202 |     for variant in variants.iter() {
        |                    ^^^^^^^^^^^^^^^ help: to write this more concisely, try: `variants`
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop
        = note: `-D clippy::explicit-iter-loop` implied by `-D clippy::pedantic`

    error: it is more concise to loop over references to containers instead of using explicit iteration methods
       --> serde_derive/src/bound.rs:262:28
        |
    262 |             for variant in variants.iter() {
        |                            ^^^^^^^^^^^^^^^ help: to write this more concisely, try: `variants`
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_iter_loop
2023-07-02 21:08:44 -07:00
David Tolnay
b053b4f492
Touch up early return in Enum checks 2023-07-02 21:08:44 -07:00
Mingun
4cf1fec575 Replace several linked variables with enumeration for tuples 2023-06-26 20:55:52 +05:00
Mingun
ee7d77defa Replace several linked variables with enumeration for structs 2023-06-26 20:55:52 +05:00
Mingun
d0dfc4577e Replace enum with boolean parameter 2023-06-26 20:55:52 +05:00
Mingun
bbbd1d24c9 Move deserialize_generated_identifier out from if because the call is same in both arms 2023-06-26 20:55:51 +05:00
Mingun
fb3a9e0d7c Simplify check for missing fields 2023-06-26 20:55:51 +05:00
Mingun
5ffebeb6ef Actually, field_names_idents can be calculated using the same code in both cases
When !cattrs.has_flatten() all fields is !field.attrs.flatten()

Co-authored-by: Oliver Schneider <oli-obk@users.noreply.github.com>
2023-06-26 20:55:51 +05:00
Mingun
75db73066b Inline deserialize_struct_as_map_visitor and deserialize_struct_as_struct_visitor 2023-06-26 20:55:51 +05:00
Mingun
2796833c82 Pull up call to deserialize_map because it's identical 2023-06-26 20:55:50 +05:00
Mingun
95730dc7f7 Reorder variables to match order in final quote! 2023-06-26 20:55:50 +05:00
Mingun
795261919f Generate visit_seq only when needed 2023-06-26 20:55:50 +05:00
Mingun
3783a30ae7 Remove TaggedContent, replace it by a tuple
That type does not give any benefits so we can avoid that hidden public but no-API struct
2023-06-24 20:49:49 +05:00
Mingun
780a461d92 Generate one deserializer rather than in each arm 2023-06-24 20:48:08 +05:00
David Tolnay
20a48c9580
Remove .clippy.toml in favor of respecting rust-version from Cargo.toml 2023-06-15 18:31:38 -07:00
David Tolnay
8a4dfa7231
Merge pull request #2466 from Mingun/fix-de-count-of-field
Fix incorrect count of fields passed to tuple deserialization methods
2023-06-07 22:13:08 -07:00
David Tolnay
107018c628
Release 1.0.164 2023-06-07 22:05:07 -07:00
David Tolnay
a398237930
Point out serde(untagged) variants which are out of order
Previously if someone wrote an enum containing:

- `A` (untagged)
- `B` (tagged)
- `C` (tagged)
- `D` (untagged)
- `E` (tagged)
- `F` (untagged)

serde_derive would produce errors referring to B and E only, saying
you're supposed to put untagged variants at the end. The choice of B and
E for this error doesn't make a lot of sense because in order to resolve
the issue, the user must either:

- move A and D down

or:

- move B, C, and E up.

This commit changes the error to appear on A and D instead.
2023-06-07 21:49:30 -07:00
David Tolnay
f60324e883
Reuse a single ContentRefDeserializer throughout untagged enum deserialization 2023-06-07 21:33:14 -07:00
David Tolnay
361c23a09a
Simplify enumerate().find(...) -> Iterator::position 2023-06-07 21:23:31 -07:00
David Tolnay
43b23c7ea0
Format PR 2403 with rustfmt 2023-06-07 21:18:30 -07:00
David Tolnay
6081497506
Resolve semicolon_if_nothing_returned pedantic clippy lint
error: consider adding a `;` to the last statement for consistent formatting
       --> serde_derive/src/internals/ast.rs:161:13
        |
    161 |             seen_untagged = variant.attrs.untagged()
        |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `seen_untagged = variant.attrs.untagged();`
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
        = note: `-D clippy::semicolon-if-nothing-returned` implied by `-D clippy::pedantic`

    error: consider adding a `;` to the last statement for consistent formatting
       --> serde_derive/src/internals/ast.rs:159:17
        |
    159 | ...   cx.error_spanned_by(&variant.ident, "all variants with the #[serde(untagged)] attribute must be placed at the end of the enum")
        |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `cx.error_spanned_by(&variant.ident, "all variants with the #[serde(untagged)] attribute must be placed at the end of the enum");`
        |
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#semicolon_if_nothing_returned
2023-06-07 21:17:24 -07:00
David Ewert
48e5753e76
Allowed Enum variants to be individually marked as untagged (#2403) 2023-06-07 20:58:59 -07:00
Mingun
2c1f62d4b4 Fix incorrect count of fields passed to tuple deserialization methods
This count should mean the number of fields expected in the serialized form,
so if some fields are skipped, they shouldn't be counted

Methods affected:
- Deserializer::deserialize_tuple
- Deserializer::deserialize_tuple_struct
- VariantAccess::tuple_variant
2023-05-28 23:17:05 +05:00
David Tolnay
7c2c12aa43
Use syn::Error's combine() API instead of Vec<syn::Error> 2023-05-25 08:10:14 -07:00
David Tolnay
fccb9499bc
Release 1.0.163 2023-05-10 00:47:53 -07:00
David Tolnay
a139ab2572
Adjust PR 2446 with less overgeneralized name 2023-05-10 00:45:52 -07:00
Mingun
ab6588ef74 Extract duplicated code into a function 2023-05-08 10:39:30 +05:00
Taiki Endo
ef2a7c753f Remove build script from serde_derive
The current serde_derive's MSRV is 1.56, and both underscore consts and
ptr::addr_of! are always available.
2023-05-06 05:34:38 +09:00
David Tolnay
99f165b45a
Release 1.0.162 2023-05-04 18:46:55 -07:00
David Tolnay
3e4a23cbd0
Release 1.0.161 2023-05-04 16:45:18 -07:00
David Tolnay
0c6a2bbf79
Release 1.0.160 2023-04-10 22:15:49 -07:00
Michael Goulet
5f3fd9994e Make serializer/deserializer internals doc(hidden) 2023-04-10 21:41:50 -07:00
David Tolnay
d6de911855
Release 1.0.159 2023-03-27 22:05:58 -07:00
David Tolnay
4cb8d079f8
Accept empty #[serde()] attribute 2023-03-27 22:00:46 -07:00
David Tolnay
e3058105f0
Release 1.0.158 2023-03-20 04:24:27 -07:00
David Tolnay
dc200a6450
Reformat comments of non-public serde_derive internals
Fixes these being treated as "tests" by `cargo test` in serde_derive:

    running 3 tests
    test src/internals/check.rs - internals::check::check_remote_generic (line 23) ... FAILED
    test src/internals/check.rs - internals::check::check_remote_generic (line 29) ... FAILED
    test src/lib.rs - (line 3) ... ok

    failures:

    ---- src/internals/check.rs - internals::check::check_remote_generic (line 23) stdout ----
    error: unknown start of token: \u{2026}
     --> src/internals/check.rs:25:20
      |
    4 | struct Generic<T> {…}
      |                    ^

    error: cannot find attribute `serde` in this scope
     --> src/internals/check.rs:24:3
      |
    3 | #[serde(remote = "Generic")]
      |   ^^^^^
      |
      = note: `serde` is in scope, but it is a crate, not an attribute

    error[E0392]: parameter `T` is never used
     --> src/internals/check.rs:25:16
      |
    4 | struct Generic<T> {…}
      |                ^ unused parameter
      |
      = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
      = help: if you intended `T` to be a const parameter, use `const T: usize` instead

    ---- src/internals/check.rs - internals::check::check_remote_generic (line 29) stdout ----
    error: unknown start of token: \u{2026}
     --> src/internals/check.rs:31:21
      |
    4 | struct ConcreteDef {…}
      |                     ^

    error: cannot find attribute `serde` in this scope
     --> src/internals/check.rs:30:3
      |
    3 | #[serde(remote = "Generic<T>")]
      |   ^^^^^
      |
      = note: `serde` is in scope, but it is a crate, not an attribute
2023-03-20 04:23:46 -07:00
David Tolnay
dd460f82a1
Check for None-delimited group in attribute value 2023-03-20 04:16:52 -07:00
David Tolnay
479a00a215
Release 1.0.157 2023-03-17 17:35:09 -07:00
David Tolnay
c42e7c8012
Reflect serde_derive required compiler in build script and rust-version metadata 2023-03-17 17:34:46 -07:00
David Tolnay
bc22641359
Rewrite attribute parser using parse_nested_meta 2023-03-17 17:23:56 -07:00
David Tolnay
32f0d00ff9
Update to syn 2 2023-03-17 17:17:40 -07:00
David Tolnay
54671259aa
Release 1.0.156 2023-03-14 01:02:18 -07:00
David Tolnay
2ba406726f
Release 1.0.155 2023-03-11 12:57:53 -08:00
David Tolnay
8b1887c440
Remove unneeded attr_name argument when parsing borrow attr 2023-03-11 11:35:03 -08:00
David Tolnay
e106feb5ec
Eagerly parse variant-level borrow attribute instead of deferring entire Meta 2023-03-11 11:25:00 -08:00
David Tolnay
b7b636a23f
Treat field-level borrow attr as duplicate of variant-level borrow attr 2023-03-11 11:17:40 -08:00
David Tolnay
183b91775e
Fix some comments in parsing of from/try_from/into attributes 2023-03-10 14:16:11 -08:00
David Tolnay
4d9b76db73
Rearrange parts of attr.rs that rustfmt has been refusing to format 2023-03-09 20:17:43 -08:00
David Tolnay
9af132f594
Factor out duplicated error messages into reused variable 2023-03-09 20:17:20 -08:00
David Tolnay
6c063569c0
Eliminate closure from Punctuated to Vec conversion 2023-03-09 00:43:33 -08:00
David Tolnay
f301e09e02
Simplify parsing of where-predicates in bound attribute 2023-03-09 00:20:51 -08:00
David Tolnay
1714c262c4
Eliminate special case on empty string passed to bound=""
This works just fine if we make syn parse "where " as a syn::WhereClause.

The serde(bound = "") attribute is definitely not common enough that it
would warrant a micro-optimization.
2023-03-08 19:20:06 -08:00
David Tolnay
be57a5e00a
Eliminate special case on empty string passed to borrow="" 2023-03-08 18:50:19 -08:00
David Tolnay
43da87939d
Simplify parsing of borrow="..." attributes 2023-03-08 18:38:12 -08:00
David Tolnay
49a911d7de
Replace serde_derive_internal's parse_lit_str with syn::LitStr::parse 2023-03-08 18:23:35 -08:00
David Tolnay
27d6628785
Refer to syn's parse result via syn instead of parse module 2023-03-08 18:20:30 -08:00
David Tolnay
e4e2956e79
Handle repr attribute consistently with every other serde attribute 2023-03-08 13:57:43 -08:00
David Tolnay
ea2f7b81d9
Sort symbol list in alphabetical order
PR 1916 put EXPECTING at the end instead of in order.
2023-03-08 13:14:45 -08:00
David Tolnay
6a5da85fcd
Release 1.0.154 2023-03-08 12:09:05 -08:00
David Tolnay
0750eee4ff
Merge pull request #2383 from Mingun/fix-flatten+static
Fix generation of non-existent lifetime `'de` when enum contains a #[serde(flatten)] field and a `'static` reference
2023-03-08 12:05:41 -08:00
David Tolnay
1c5ea24f76
Replace use of deprecated trim_left_matches with trim_start_matches 2023-03-08 11:54:44 -08:00
David Tolnay
88d73e5250
Format PR 2387 with rustfmt 2023-03-08 11:54:28 -08:00
David Tolnay
bb72fe2726
Update the comment on simpler exhaustive matching in derive 2023-03-08 11:46:26 -08:00
David Tolnay
e50b14afee
Release 1.0.153 2023-03-07 10:50:02 -08:00
bebecue
f5e0fbcb14 Make #[serde(alias)] works in #[serde(flatten)] context
fix #1504
2023-03-05 15:14:51 +08:00
Mingun
38c130a303 Do not generate DeserializeSeed impl when not needed
This function is called for untagged, internally and externally tagged enums,
but `deserializer` parameter is `None` only for the latest. Only when it's `None`
`DeserializeSeed` impl is used
2023-02-27 21:08:30 +05:00
Mingun
c7393614ff Fix generation of non-existent lifetime 'de when enum contains a #[serde(flatten)] field and a 'static reference 2023-02-27 21:03:34 +05:00
David Tolnay
a13c6382b6
Ignore let_underscore_untyped pedantic clippy lint
error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:157:5
        |
    157 | /     forward_to_deserialize_any! {
    158 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    159 | |         bytes byte_buf unit unit_struct newtype_struct seq tuple tuple_struct
    160 | |         map struct enum identifier ignored_any
    161 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: `-D clippy::let-underscore-untyped` implied by `-D clippy::pedantic`
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:157:5
        |
    157 | /     forward_to_deserialize_any! {
    158 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    159 | |         bytes byte_buf unit unit_struct newtype_struct seq tuple tuple_struct
    160 | |         map struct enum identifier ignored_any
    161 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:219:5
        |
    219 | /     forward_to_deserialize_any! {
    220 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    221 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    222 | |         tuple_struct map struct enum identifier ignored_any
    223 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:291:1
        |
    291 | primitive_deserializer!(bool, "a `bool`.", BoolDeserializer, visit_bool);
        | ------------------------------------------------------------------------ in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:292:1
        |
    292 | primitive_deserializer!(i8, "an `i8`.", I8Deserializer, visit_i8);
        | ----------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:293:1
        |
    293 | primitive_deserializer!(i16, "an `i16`.", I16Deserializer, visit_i16);
        | --------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:294:1
        |
    294 | primitive_deserializer!(i32, "an `i32`.", I32Deserializer, visit_i32);
        | --------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:295:1
        |
    295 | primitive_deserializer!(i64, "an `i64`.", I64Deserializer, visit_i64);
        | --------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:296:1
        |
    296 | primitive_deserializer!(isize, "an `isize`.", IsizeDeserializer, visit_i64 as i64);
        | ---------------------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:297:1
        |
    297 | primitive_deserializer!(u8, "a `u8`.", U8Deserializer, visit_u8);
        | ---------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:298:1
        |
    298 | primitive_deserializer!(u16, "a `u16`.", U16Deserializer, visit_u16);
        | -------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:299:1
        |
    299 | primitive_deserializer!(u64, "a `u64`.", U64Deserializer, visit_u64);
        | -------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:300:1
        |
    300 | primitive_deserializer!(usize, "a `usize`.", UsizeDeserializer, visit_u64 as u64);
        | --------------------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:301:1
        |
    301 | primitive_deserializer!(f32, "an `f32`.", F32Deserializer, visit_f32);
        | --------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:302:1
        |
    302 | primitive_deserializer!(f64, "an `f64`.", F64Deserializer, visit_f64);
        | --------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:303:1
        |
    303 | primitive_deserializer!(char, "a `char`.", CharDeserializer, visit_char);
        | ------------------------------------------------------------------------ in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:306:5
        |
    306 |     primitive_deserializer!(i128, "an `i128`.", I128Deserializer, visit_i128);
        |     ------------------------------------------------------------------------- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                 let _ = $arg;
        |                 ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:307:5
        |
    307 |     primitive_deserializer!(u128, "a `u128`.", U128Deserializer, visit_u128);
        |     ------------------------------------------------------------------------ in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `primitive_deserializer` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:345:5
        |
    345 | /     forward_to_deserialize_any! {
    346 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    347 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    348 | |         tuple_struct map struct identifier ignored_any
    349 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:367:9
        |
    367 |         let _ = name;
        |         ^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:368:9
        |
    368 |         let _ = variants;
        |         ^^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:450:9
        |
    450 |         let _ = name;
        |         ^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:451:9
        |
    451 |         let _ = variants;
        |         ^^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:455:5
        |
    455 | /     forward_to_deserialize_any! {
    456 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    457 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    458 | |         tuple_struct map struct identifier ignored_any
    459 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:529:9
        |
    529 |         let _ = name;
        |         ^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:530:9
        |
    530 |         let _ = variants;
        |         ^^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:534:5
        |
    534 | /     forward_to_deserialize_any! {
    535 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    536 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    537 | |         tuple_struct map struct identifier ignored_any
    538 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:630:9
        |
    630 |         let _ = name;
        |         ^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:631:9
        |
    631 |         let _ = variants;
        |         ^^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:635:5
        |
    635 | /     forward_to_deserialize_any! {
    636 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    637 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    638 | |         tuple_struct map struct identifier ignored_any
    639 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:736:9
        |
    736 |         let _ = name;
        |         ^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/value.rs:737:9
        |
    737 |         let _ = variants;
        |         ^^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:741:5
        |
    741 | /     forward_to_deserialize_any! {
    742 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    743 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    744 | |         tuple_struct map struct identifier ignored_any
    745 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:818:5
        |
    818 | /     forward_to_deserialize_any! {
    819 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    820 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    821 | |         tuple_struct map struct enum identifier ignored_any
    822 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:866:5
        |
    866 | /     forward_to_deserialize_any! {
    867 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    868 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    869 | |         tuple_struct map struct enum identifier ignored_any
    870 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/de/value.rs:945:5
        |
    945 | /     forward_to_deserialize_any! {
    946 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    947 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    948 | |         tuple_struct map struct enum identifier ignored_any
    949 | |     }
        | |_____- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/de/value.rs:1073:5
         |
    1073 | /     forward_to_deserialize_any! {
    1074 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1075 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    1076 | |         tuple_struct map struct enum identifier ignored_any
    1077 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/de/value.rs:1183:9
         |
    1183 |         let _ = len;
         |         ^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/de/value.rs:1187:5
         |
    1187 | /     forward_to_deserialize_any! {
    1188 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1189 | |         bytes byte_buf option unit unit_struct newtype_struct tuple_struct map
    1190 | |         struct enum identifier ignored_any
    1191 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/de/value.rs:1326:5
         |
    1326 | /     forward_to_deserialize_any! {
    1327 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1328 | |         bytes byte_buf option unit unit_struct newtype_struct tuple_struct map
    1329 | |         struct enum identifier ignored_any
    1330 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/de/value.rs:1486:5
         |
    1486 | /     forward_to_deserialize_any! {
    1487 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1488 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    1489 | |         tuple_struct map struct identifier ignored_any
    1490 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/de/value.rs:1539:5
         |
    1539 | /     forward_to_deserialize_any! {
    1540 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1541 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    1542 | |         tuple_struct map struct enum identifier ignored_any
    1543 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:123:9
        |
    123 |         let _ = x;
        |         ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:129:9
        |
    129 |         let _ = x;
        |         ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:136:13
        |
    136 |             let _ = x;
        |             ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:143:9
        |
    143 |         let _ = x;
        |         ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:150:13
        |
    150 |             let _ = x;
        |             ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:157:9
        |
    157 |         let _ = x;
        |         ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:166:9
        |
    166 |         let _ = s;
        |         ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/ignored_any.rs:223:9
        |
    223 |         let _ = bytes;
        |         ^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/mod.rs:957:13
        |
    957 |             let _ = visitor;
        |             ^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/de/mod.rs:991:13
        |
    991 |             let _ = visitor;
        |             ^^^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/de/mod.rs:1554:9
         |
    1554 |         let _ = v;
         |         ^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/de/mod.rs:1615:9
         |
    1615 |         let _ = deserializer;
         |         ^^^^^^^^^^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/de/mod.rs:1639:9
         |
    1639 |         let _ = deserializer;
         |         ^^^^^^^^^^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/de/mod.rs:1650:9
         |
    1650 |         let _ = seq;
         |         ^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/de/mod.rs:1661:9
         |
    1661 |         let _ = map;
         |         ^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/de/mod.rs:1672:9
         |
    1672 |         let _ = data;
         |         ^^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
      --> serde/src/ser/impossible.rs:79:9
       |
    79 |         let _ = value;
       |         ^^^^^^^^^^^^^^
       |
       = help: consider adding a type annotation or removing the `let` keyword
       = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
      --> serde/src/ser/impossible.rs:99:9
       |
    99 |         let _ = value;
       |         ^^^^^^^^^^^^^^
       |
       = help: consider adding a type annotation or removing the `let` keyword
       = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:119:9
        |
    119 |         let _ = value;
        |         ^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:139:9
        |
    139 |         let _ = value;
        |         ^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:159:9
        |
    159 |         let _ = key;
        |         ^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:167:9
        |
    167 |         let _ = value;
        |         ^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:187:9
        |
    187 |         let _ = key;
        |         ^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:188:9
        |
    188 |         let _ = value;
        |         ^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:208:9
        |
    208 |         let _ = key;
        |         ^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/impossible.rs:209:9
        |
    209 |         let _ = value;
        |         ^^^^^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/mod.rs:512:13
        |
    512 |             let _ = v;
        |             ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/ser/mod.rs:622:13
        |
    622 |             let _ = v;
        |             ^^^^^^^^^^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/ser/mod.rs:1906:9
         |
    1906 |         let _ = key;
         |         ^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/ser/mod.rs:1972:9
         |
    1972 |         let _ = key;
         |         ^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
       --> serde/src/macros.rs:132:17
        |
    132 |                   let _ = $arg;
        |                   ^^^^^^^^^^^^^
        |
       ::: serde/src/private/de.rs:47:9
        |
    47  | /         forward_to_deserialize_any! {
    48  | |             bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    49  | |             bytes byte_buf unit unit_struct newtype_struct seq tuple
    50  | |             tuple_struct map struct enum identifier ignored_any
    51  | |         }
        | |_________- in this macro invocation
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/private/de.rs:1451:13
         |
    1451 |             let _ = visitor;
         |             ^^^^^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/private/de.rs:1633:9
         |
    1633 | /         forward_to_deserialize_any! {
    1634 | |             bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1635 | |             bytes byte_buf option unit unit_struct newtype_struct seq tuple
    1636 | |             tuple_struct map struct enum identifier ignored_any
    1637 | |         }
         | |_________- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/private/de.rs:1731:9
         |
    1731 | /         forward_to_deserialize_any! {
    1732 | |             bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    1733 | |             bytes byte_buf option unit unit_struct newtype_struct seq tuple
    1734 | |             tuple_struct map struct enum identifier ignored_any
    1735 | |         }
         | |_________- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/private/de.rs:2174:13
         |
    2174 |             let _ = visitor;
         |             ^^^^^^^^^^^^^^^^
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/private/de.rs:2343:9
         |
    2343 | /         forward_to_deserialize_any! {
    2344 | |             bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    2345 | |             bytes byte_buf option unit unit_struct newtype_struct seq tuple
    2346 | |             tuple_struct map struct enum identifier ignored_any
    2347 | |         }
         | |_________- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/private/de.rs:2443:9
         |
    2443 | /         forward_to_deserialize_any! {
    2444 | |             bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    2445 | |             bytes byte_buf option unit unit_struct newtype_struct seq tuple
    2446 | |             tuple_struct map struct enum identifier ignored_any
    2447 | |         }
         | |_________- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/private/de.rs:2611:5
         |
    2611 | /     forward_to_deserialize_any! {
    2612 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    2613 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    2614 | |         tuple_struct map struct enum identifier ignored_any
    2615 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
        --> serde/src/macros.rs:132:17
         |
    132  |                   let _ = $arg;
         |                   ^^^^^^^^^^^^^
         |
        ::: serde/src/private/de.rs:2636:5
         |
    2636 | /     forward_to_deserialize_any! {
    2637 | |         bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
    2638 | |         bytes byte_buf option unit unit_struct newtype_struct seq tuple
    2639 | |         tuple_struct map struct enum identifier ignored_any
    2640 | |     }
         | |_____- in this macro invocation
         |
         = help: consider adding a type annotation or removing the `let` keyword
         = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
         = note: this error originates in the macro `forward_to_deserialize_any_method` which comes from the expansion of the macro `forward_to_deserialize_any` (in Nightly builds, run with -Z macro-backtrace for more info)

    error: non-binding `let` without a type annotation
       --> serde_derive/src/internals/attr.rs:591:17
        |
    591 | /                 let _ = attr.parse_args_with(|input: ParseStream| {
    592 | |                     while let Some(token) = input.parse()? {
    593 | |                         if let TokenTree::Ident(ident) = token {
    594 | |                             is_packed |= ident == "packed";
    ...   |
    597 | |                     Ok(())
    598 | |                 });
        | |___________________^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: `-D clippy::let-underscore-untyped` implied by `-D clippy::pedantic`

    error: non-binding `let` without a type annotation
       --> serde_derive_internals/src/attr.rs:591:17
        |
    591 | /                 let _ = attr.parse_args_with(|input: ParseStream| {
    592 | |                     while let Some(token) = input.parse()? {
    593 | |                         if let TokenTree::Ident(ident) = token {
    594 | |                             is_packed |= ident == "packed";
    ...   |
    597 | |                     Ok(())
    598 | |                 });
        | |___________________^
        |
        = help: consider adding a type annotation or removing the `let` keyword
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_underscore_untyped
        = note: `-D clippy::let-underscore-untyped` implied by `-D clippy::pedantic`
2023-02-26 23:08:38 -07:00
David Tolnay
ccf9c6fc07
Release 1.0.152 2022-12-26 09:21:13 -08:00
David Tolnay
44bf3633af
Release 1.0.151 2022-12-16 10:35:12 -08:00
David Tolnay
4f157a8b81
Prevent build.rs rerunning unnecessarily on all source changes 2022-12-12 14:37:41 -08:00
David Tolnay
d493649f52
Release 1.0.150 2022-12-11 16:24:46 -08:00
David Tolnay
0353354d61
Release 1.0.149 2022-12-04 23:11:59 -08:00
David Tolnay
7766103174
Release 1.0.148 2022-11-27 17:58:18 -08:00
David Tolnay
50354c2d0b
Improve error message on remote derive duplicate generics 2022-11-27 17:48:48 -08:00
David Tolnay
37021910c9
Fix Into conversion involving generic remote derive with getter 2022-11-27 17:18:10 -08:00
David Tolnay
2062a3c16d
Handle remote type written without turbofish 2022-11-27 16:32:06 -08:00
David Tolnay
e19844c659
Fix renamed let_underscore_drop lint
warning: lint `clippy::let_underscore_drop` has been renamed to `let_underscore_drop`
      --> serde_derive/src/lib.rs:46:5
       |
    46 |     clippy::let_underscore_drop,
       |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `let_underscore_drop`
       |
       = note: `#[warn(renamed_and_removed_lints)]` on by default
2022-11-22 19:04:29 -08:00
David Tolnay
ab230e6e44
Resolve needless_lifetimes clippy lints
error: the following explicit lifetimes could be elided: 'a
       --> serde_derive/src/ser.rs:869:1
        |
    869 | / fn serialize_struct_variant<'a>(
    870 | |     context: StructVariant<'a>,
    871 | |     params: &Parameters,
    872 | |     fields: &[Field],
    873 | |     name: &str,
    874 | | ) -> Fragment {
        | |_____________^
        |
    help: replace with `'_` in generic arguments such as here
       --> serde_derive/src/ser.rs:870:28
        |
    870 |     context: StructVariant<'a>,
        |                            ^^
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
        = note: `-D clippy::needless-lifetimes` implied by `-D clippy::all`

    error: the following explicit lifetimes could be elided: 'a
       --> serde_derive/src/ser.rs:953:1
        |
    953 | / fn serialize_struct_variant_with_flatten<'a>(
    954 | |     context: StructVariant<'a>,
    955 | |     params: &Parameters,
    956 | |     fields: &[Field],
    957 | |     name: &str,
    958 | | ) -> Fragment {
        | |_____________^
        |
    help: replace with `'_` in generic arguments such as here
       --> serde_derive/src/ser.rs:954:28
        |
    954 |     context: StructVariant<'a>,
        |                            ^^
        = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes
2022-11-22 18:41:37 -08:00
David Tolnay
f41509261e
Release 1.0.147 2022-10-21 10:04:43 -07:00
David Tolnay
3fd8e52f0c
Release 1.0.146 2022-10-21 01:03:47 -07:00