The serialization implementation is heavily
inspired by the existing trait implentation for
`std::num::Wrapping<T>`.
The deserializing implementation maps input values
that lie outside of the numerical range of the
output type to the `MIN` or `MAX` value of the
output type, depending on the sign of the input
value. This behaviour follows to the `Saturating`
semantics of the output type.
fix#2708
warning: usage of a legacy numeric method
--> serde_derive/src/ser.rs:292:51
|
292 | assert!(fields.len() as u64 <= u64::from(u32::max_value()));
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
= note: `#[warn(clippy::legacy_numeric_constants)]` on by default
help: use the associated constant instead
|
292 | assert!(fields.len() as u64 <= u64::from(u32::MAX));
| ~~~
warning: usage of a legacy numeric method
--> serde_derive/src/ser.rs:400:53
|
400 | assert!(variants.len() as u64 <= u64::from(u32::max_value()));
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
help: use the associated constant instead
|
400 | assert!(variants.len() as u64 <= u64::from(u32::MAX));
| ~~~
warning: usage of a legacy numeric method
--> test_suite/tests/test_de_error.rs:1462:29
|
1462 | Token::U64(u64::max_value()),
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
= note: `-W clippy::legacy-numeric-constants` implied by `-W clippy::all`
= help: to override `-W clippy::all` add `#[allow(clippy::legacy_numeric_constants)]`
help: use the associated constant instead
|
1462 | Token::U64(u64::MAX),
| ~~~
warning: usage of a legacy numeric method
--> test_suite/tests/test_de_error.rs:1479:29
|
1479 | Token::U64(u64::max_value()),
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
help: use the associated constant instead
|
1479 | Token::U64(u64::MAX),
| ~~~
warning: usage of a legacy numeric method
--> test_suite/tests/test_de_error.rs:1493:29
|
1493 | Token::U64(u64::max_value()),
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
help: use the associated constant instead
|
1493 | Token::U64(u64::MAX),
| ~~~
warning: usage of a legacy numeric method
--> test_suite/tests/test_de_error.rs:1510:29
|
1510 | Token::U64(u64::max_value()),
| ^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants
help: use the associated constant instead
|
1510 | Token::U64(u64::MAX),
| ~~~
Debugging a recent cargo-outdated bug, it would have been nice not to
wonder whether a rustc version change in GitHub's runner image was a
contributing factor.
New in nightly-2024-03-24 from https://github.com/rust-lang/rust/pull/119552.
warning: fields `nested` and `string` are never read
--> test_suite/tests/regression/issue2371.rs:10:9
|
8 | Flatten {
| ------- fields in this variant
9 | #[serde(flatten)]
10 | nested: Nested,
| ^^^^^^
11 | string: &'static str,
| ^^^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: fields `nested` and `string` are never read
--> test_suite/tests/regression/issue2371.rs:20:9
|
18 | Flatten {
| ------- fields in this variant
19 | #[serde(flatten)]
20 | nested: Nested,
| ^^^^^^
21 | string: &'static str,
| ^^^^^^
warning: fields `nested` and `string` are never read
--> test_suite/tests/regression/issue2371.rs:30:9
|
28 | Flatten {
| ------- fields in this variant
29 | #[serde(flatten)]
30 | nested: Nested,
| ^^^^^^
31 | string: &'static str,
| ^^^^^^
warning: fields `nested` and `string` are never read
--> test_suite/tests/regression/issue2371.rs:40:9
|
38 | Flatten {
| ------- fields in this variant
39 | #[serde(flatten)]
40 | nested: Nested,
| ^^^^^^
41 | string: &'static str,
| ^^^^^^
warning: field `0` is never read
--> test_suite/tests/test_gen.rs:690:33
|
690 | Single(#[serde(borrow)] RelObject<'a>),
| ------ ^^^^^^^^^^^^^
| |
| field in this variant
|
= note: `#[warn(dead_code)]` on by default
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
690 | Single(#[serde(borrow)] ()),
| ~~
warning: field `0` is never read
--> test_suite/tests/test_gen.rs:691:31
|
691 | Many(#[serde(borrow)] Vec<RelObject<'a>>),
| ---- ^^^^^^^^^^^^^^^^^^
| |
| field in this variant
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
691 | Many(#[serde(borrow)] ()),
| ~~
New warning since nightly-2024-03-03:
warning: serde_derive/Cargo.toml: no edition set: defaulting to the 2015 edition while 2018 is compatible with `rust-version`
warning: serde_derive_internals/Cargo.toml: no edition set: defaulting to the 2015 edition while 2018 is compatible with `rust-version`
warning: the item `Into` is imported redundantly
--> serde/src/lib.rs:184:47
|
184 | pub use self::core::convert::{self, From, Into};
| ^^^^
|
::: nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/prelude/mod.rs:115:13
|
115 | pub use super::v1::*;
| --------- the item `Into` is already defined here
|
= note: `#[warn(unused_imports)]` on by default
warning: current MSRV (Minimum Supported Rust Version) is `1.31.0` but this item is stable since `1.35.0`
--> serde/src/de/impls.rs:200:39
|
200 | Ok((v as Self::Value).copysign(sign))
| ^^^^^^^^^^^^^^
...
374 | / impl_deserialize_num! {
375 | | f32, deserialize_f32
376 | | num_self!(f32:visit_f32);
377 | | num_as_copysign_self!(f64:visit_f64);
378 | | num_as_self!(i8:visit_i8 i16:visit_i16 i32:visit_i32 i64:visit_i64);
379 | | num_as_self!(u8:visit_u8 u16:visit_u16 u32:visit_u32 u64:visit_u64);
380 | | }
| |_- in this macro invocation
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: `-W clippy::incompatible-msrv` implied by `-W clippy::all`
= help: to override `-W clippy::all` add `#[allow(clippy::incompatible_msrv)]`
= note: this warning originates in the macro `num_as_copysign_self` which comes from the expansion of the macro `impl_deserialize_num` (in Nightly builds, run with -Z macro-backtrace for more info)
warning: current MSRV (Minimum Supported Rust Version) is `1.31.0` but this item is stable since `1.35.0`
--> serde/src/de/impls.rs:200:39
|
200 | Ok((v as Self::Value).copysign(sign))
| ^^^^^^^^^^^^^^
...
382 | / impl_deserialize_num! {
383 | | f64, deserialize_f64
384 | | num_self!(f64:visit_f64);
385 | | num_as_copysign_self!(f32:visit_f32);
386 | | num_as_self!(i8:visit_i8 i16:visit_i16 i32:visit_i32 i64:visit_i64);
387 | | num_as_self!(u8:visit_u8 u16:visit_u16 u32:visit_u32 u64:visit_u64);
388 | | }
| |_- in this macro invocation
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: this warning originates in the macro `num_as_copysign_self` which comes from the expansion of the macro `impl_deserialize_num` (in Nightly builds, run with -Z macro-backtrace for more info)
warning: current MSRV (Minimum Supported Rust Version) is `1.31.0` but this item is stable since `1.34.0`
--> serde/src/de/impls.rs:2308:14
|
2308 | .checked_add(duration)
| ^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
warning: current MSRV (Minimum Supported Rust Version) is `1.31.0` but this item is stable since `1.34.0`
--> serde/src/ser/impls.rs:606:26
|
606 | self.get().serialize(serializer)
| ^^^^^
...
623 | / nonzero_integers! {
624 | | NonZeroI8,
625 | | NonZeroI16,
626 | | NonZeroI32,
... |
629 | | NonZeroIsize,
630 | | }
| |_- in this macro invocation
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: this warning originates in the macro `nonzero_integers` (in Nightly builds, run with -Z macro-backtrace for more info)
warning: current MSRV (Minimum Supported Rust Version) is `1.31.0` but this item is stable since `1.34.0`
--> serde/src/ser/impls.rs:1053:26
|
1053 | self.load(Ordering::Relaxed).serialize(serializer)
| ^^^^^^^^^^^^^^^^^^^^^^^
...
1061 | / atomic_impl! {
1062 | | AtomicBool "8"
1063 | | AtomicI8 "8"
1064 | | AtomicI16 "16"
... |
1070 | | AtomicUsize "ptr"
1071 | | }
| |_- in this macro invocation
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: this warning originates in the macro `atomic_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
warning: current MSRV (Minimum Supported Rust Version) is `1.31.0` but this item is stable since `1.34.0`
--> serde/src/ser/impls.rs:1053:26
|
1053 | self.load(Ordering::Relaxed).serialize(serializer)
| ^^^^^^^^^^^^^^^^^^^^^^^
...
1074 | / atomic_impl! {
1075 | | AtomicI64 "64"
1076 | | AtomicU64 "64"
1077 | | }
| |_- in this macro invocation
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#incompatible_msrv
= note: this warning originates in the macro `atomic_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
warning: serde_derive_internals/Cargo.toml: `default-features` is
ignored for syn, since `default-features` was not specified for
`workspace.dependencies.syn`, this could become a hard error in the
future
warning: field `0` is never read
--> test_suite/tests/test_remote.rs:143:24
|
143 | struct PrimitivePubDef(u8);
| --------------- ^^
| |
| field in this struct
|
= note: `#[warn(dead_code)]` on by default
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
143 | struct PrimitivePubDef(());
| ~~
warning: field `0` is never read
--> test_suite/tests/test_remote.rs:162:20
|
162 | struct TuplePubDef(u8, #[serde(with = "UnitDef")] remote::Unit);
| ----------- ^^
| |
| field in this struct
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
162 | struct TuplePubDef((), #[serde(with = "UnitDef")] remote::Unit);
| ~~
warning: field `0` is never read
--> test_suite/tests/test_remote.rs:200:13
|
200 | Variant(u8),
| ------- ^^
| |
| field in this variant
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
200 | Variant(()),
| ~~
error: field `0` is never read
--> test_suite/tests/test_gen.rs:390:23
|
390 | struct StrDef<'a>(&'a str);
| ------ ^^^^^^^
| |
| field in this struct
|
note: the lint level is defined here
--> test_suite/tests/test_gen.rs:5:9
|
5 | #![deny(warnings)]
| ^^^^^^^^
= note: `#[deny(dead_code)]` implied by `#[deny(warnings)]`
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
390 | struct StrDef<'a>(());
| ~~
error: field `0` is never read
--> test_suite/tests/test_gen.rs:690:33
|
690 | Single(#[serde(borrow)] RelObject<'a>),
| ------ ^^^^^^^^^^^^^
| |
| field in this variant
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
690 | Single(#[serde(borrow)] ()),
| ~~
error: field `0` is never read
--> test_suite/tests/test_gen.rs:691:31
|
691 | Many(#[serde(borrow)] Vec<RelObject<'a>>),
| ---- ^^^^^^^^^^^^^^^^^^
| |
| field in this variant
|
help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
|
691 | Many(#[serde(borrow)] ()),
| ~~
error: some variants are not matched explicitly
--> serde_derive/src/internals/attr.rs:1823:31
|
1823 | match arg {
| ^^^ patterns `&GenericArgument::Const(_)`, `&GenericArgument::AssocConst(_)` and `&GenericArgument::Constraint(_)` not covered
|
= help: ensure that all variants are matched explicitly by adding the suggested match arms
= note: the matched value is of type `&GenericArgument` and the `non_exhaustive_omitted_patterns` attribute was found
note: the lint level is defined here
--> serde_derive/src/internals/attr.rs:1797:49
|
1797 | #![cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: the lint level must be set on the whole match
--> serde_derive/src/internals/attr.rs:1855:9
|
1854 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
1855 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
1796 + #[deny(non_exhaustive_omitted_patterns)]
1797 | match ty {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/internals/receiver.rs:151:13
|
150 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
151 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
109 + #[deny(non_exhaustive_omitted_patterns)]
110 | match ty {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/internals/receiver.rs:188:25
|
187 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
188 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
180 + #[deny(non_exhaustive_omitted_patterns)]
181 | match arg {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/internals/receiver.rs:213:13
|
212 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
213 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
209 + #[deny(non_exhaustive_omitted_patterns)]
210 | match bound {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/internals/receiver.rs:239:21
|
238 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
239 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
230 + #[deny(non_exhaustive_omitted_patterns)]
231 | match predicate {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/bound.rs:185:17
|
184 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
185 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
146 + #[deny(non_exhaustive_omitted_patterns)]
147 | match ty {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/bound.rs:209:29
|
207 | ... deny(non_exhaustive_omitted_patterns)
| ------------------------------- remove this attribute
208 | ... )]
209 | ... _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
198 + #[deny(non_exhaustive_omitted_patterns)]
199 | match arg {
|
warning: the lint level must be set on the whole match
--> serde_derive/src/bound.rs:234:17
|
233 | #[cfg_attr(all(test, exhaustive), deny(non_exhaustive_omitted_patterns))]
| ------------------------------- remove this attribute
234 | _ => {}
| ^
|
= help: it no longer has any effect to set the lint level on an individual match arm
help: set the lint level on the whole match
|
230 + #[deny(non_exhaustive_omitted_patterns)]
231 | match bound {
|
warning: possible intra-doc link using quotes instead of backticks
--> serde/src/de/mod.rs:67:41
|
67 | //! - Rc\<T\> *(if* features = ["rc"] *is enabled)*
| ^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes
= note: `-W clippy::doc-link-with-quotes` implied by `-W clippy::pedantic`
= help: to override `-W clippy::pedantic` add `#[allow(clippy::doc_link_with_quotes)]`
warning: possible intra-doc link using quotes instead of backticks
--> serde/src/de/mod.rs:68:42
|
68 | //! - Arc\<T\> *(if* features = ["rc"] *is enabled)*
| ^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes
warning: possible intra-doc link using quotes instead of backticks
--> serde/src/ser/mod.rs:64:41
|
64 | //! - Rc\<T\> *(if* features = ["rc"] *is enabled)*
| ^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes
warning: possible intra-doc link using quotes instead of backticks
--> serde/src/ser/mod.rs:65:42
|
65 | //! - Arc\<T\> *(if* features = ["rc"] *is enabled)*
| ^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_link_with_quotes