mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-29 07:07:57 +00:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 18dcae0a77 | |||
| 58c307f9cc | |||
| 8cc4809414 | |||
| 1179158def | |||
| 91aa40e749 | |||
| 595019e979 | |||
| b0d7917f88 | |||
| 8e6637a1e4 | |||
| 694fe05953 | |||
| f3dfd2a237 | |||
| 9e6158e9e6 | |||
| d577c4a2ce | |||
| fee0b82a40 | |||
| 7aafa26314 |
@@ -84,6 +84,7 @@ jobs:
|
|||||||
- uses: dtolnay/rust-toolchain@master
|
- uses: dtolnay/rust-toolchain@master
|
||||||
with:
|
with:
|
||||||
toolchain: ${{matrix.rust}}
|
toolchain: ${{matrix.rust}}
|
||||||
|
- run: sed -i '/"test_suite"/d' Cargo.toml
|
||||||
- run: cd serde && cargo build --features rc
|
- run: cd serde && cargo build --features rc
|
||||||
- run: cd serde && cargo build --no-default-features
|
- run: cd serde && cargo build --no-default-features
|
||||||
- run: cd serde && cargo build
|
- run: cd serde && cargo build
|
||||||
@@ -95,6 +96,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: dtolnay/rust-toolchain@1.56.0
|
- uses: dtolnay/rust-toolchain@1.56.0
|
||||||
|
- run: sed -i '/"test_suite"/d' Cargo.toml
|
||||||
- run: cd serde && cargo check --no-default-features
|
- run: cd serde && cargo check --no-default-features
|
||||||
- run: cd serde && cargo check
|
- run: cd serde && cargo check
|
||||||
- run: cd serde_derive && cargo check
|
- run: cd serde_derive && cargo check
|
||||||
@@ -106,6 +108,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: dtolnay/rust-toolchain@1.36.0
|
- uses: dtolnay/rust-toolchain@1.36.0
|
||||||
|
- run: sed -i '/"test_suite"/d' Cargo.toml
|
||||||
- run: cd serde && cargo build --no-default-features --features alloc
|
- run: cd serde && cargo build --no-default-features --features alloc
|
||||||
|
|
||||||
minimal:
|
minimal:
|
||||||
|
|||||||
+2
-2
@@ -46,8 +46,8 @@ fn main() {
|
|||||||
Serde is one of the most widely used Rust libraries so any place that Rustaceans
|
Serde is one of the most widely used Rust libraries so any place that Rustaceans
|
||||||
congregate will be able to help you out. For chat, consider trying the
|
congregate will be able to help you out. For chat, consider trying the
|
||||||
[#rust-questions] or [#rust-beginners] channels of the unofficial community
|
[#rust-questions] or [#rust-beginners] channels of the unofficial community
|
||||||
Discord (invite: <https://discord.gg/rust-lang-community>, the [#rust-usage] or
|
Discord (invite: <https://discord.gg/rust-lang-community>), the [#rust-usage]
|
||||||
[#beginners] channels of the official Rust Project Discord (invite:
|
or [#beginners] channels of the official Rust Project Discord (invite:
|
||||||
<https://discord.gg/rust-lang>), or the [#general][zulip] stream in Zulip. For
|
<https://discord.gg/rust-lang>), or the [#general][zulip] stream in Zulip. For
|
||||||
asynchronous, consider the [\[rust\] tag on StackOverflow][stackoverflow], the
|
asynchronous, consider the [\[rust\] tag on StackOverflow][stackoverflow], the
|
||||||
[/r/rust] subreddit which has a pinned weekly easy questions post, or the Rust
|
[/r/rust] subreddit which has a pinned weekly easy questions post, or the Rust
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.203"
|
version = "1.0.204"
|
||||||
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
|
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
categories = ["encoding", "no-std", "no-std::no-alloc"]
|
categories = ["encoding", "no-std", "no-std::no-alloc"]
|
||||||
@@ -37,7 +37,7 @@ rustdoc-args = ["--generate-link-to-definition"]
|
|||||||
# is compatible with exactly one serde release because the generated code
|
# is compatible with exactly one serde release because the generated code
|
||||||
# involves nonpublic APIs which are not bound by semver.
|
# involves nonpublic APIs which are not bound by semver.
|
||||||
[target.'cfg(any())'.dependencies]
|
[target.'cfg(any())'.dependencies]
|
||||||
serde_derive = { version = "=1.0.203", path = "../serde_derive" }
|
serde_derive = { version = "=1.0.204", path = "../serde_derive" }
|
||||||
|
|
||||||
|
|
||||||
### FEATURES #################################################################
|
### FEATURES #################################################################
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ fn main() {
|
|||||||
println!("cargo:rustc-check-cfg=cfg(no_core_cstr)");
|
println!("cargo:rustc-check-cfg=cfg(no_core_cstr)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(no_core_num_saturating)");
|
println!("cargo:rustc-check-cfg=cfg(no_core_num_saturating)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(no_core_try_from)");
|
println!("cargo:rustc-check-cfg=cfg(no_core_try_from)");
|
||||||
|
println!("cargo:rustc-check-cfg=cfg(no_diagnostic_namespace)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(no_float_copysign)");
|
println!("cargo:rustc-check-cfg=cfg(no_float_copysign)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(no_num_nonzero_signed)");
|
println!("cargo:rustc-check-cfg=cfg(no_num_nonzero_signed)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(no_relaxed_trait_bounds)");
|
println!("cargo:rustc-check-cfg=cfg(no_relaxed_trait_bounds)");
|
||||||
@@ -84,6 +85,12 @@ fn main() {
|
|||||||
if minor < 74 {
|
if minor < 74 {
|
||||||
println!("cargo:rustc-cfg=no_core_num_saturating");
|
println!("cargo:rustc-cfg=no_core_num_saturating");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Support for the `#[diagnostic]` tool attribute namespace
|
||||||
|
// https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html#diagnostic-attributes
|
||||||
|
if minor < 78 {
|
||||||
|
println!("cargo:rustc-cfg=no_diagnostic_namespace");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn rustc_minor_version() -> Option<u32> {
|
fn rustc_minor_version() -> Option<u32> {
|
||||||
|
|||||||
@@ -532,6 +532,13 @@ impl<'a> Display for Expected + 'a {
|
|||||||
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
|
/// deserializer lifetimes] for a more detailed explanation of these lifetimes.
|
||||||
///
|
///
|
||||||
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
|
/// [Understanding deserializer lifetimes]: https://serde.rs/lifetimes.html
|
||||||
|
#[cfg_attr(
|
||||||
|
not(no_diagnostic_namespace),
|
||||||
|
diagnostic::on_unimplemented(
|
||||||
|
note = "for local types consider adding `#[derive(serde::Deserialize)]` to your `{Self}` type",
|
||||||
|
note = "for types from other crates check whether the crate offers a `serde` feature flag",
|
||||||
|
)
|
||||||
|
)]
|
||||||
pub trait Deserialize<'de>: Sized {
|
pub trait Deserialize<'de>: Sized {
|
||||||
/// Deserialize this value from the given Serde deserializer.
|
/// Deserialize this value from the given Serde deserializer.
|
||||||
///
|
///
|
||||||
|
|||||||
+2
-2
@@ -95,7 +95,7 @@
|
|||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Serde types in rustdoc of other crates get linked to here.
|
// Serde types in rustdoc of other crates get linked to here.
|
||||||
#![doc(html_root_url = "https://docs.rs/serde/1.0.203")]
|
#![doc(html_root_url = "https://docs.rs/serde/1.0.204")]
|
||||||
// Support using Serde without the standard library!
|
// Support using Serde without the standard library!
|
||||||
#![cfg_attr(not(feature = "std"), no_std)]
|
#![cfg_attr(not(feature = "std"), no_std)]
|
||||||
// Show which crate feature enables conditionally compiled APIs in documentation.
|
// Show which crate feature enables conditionally compiled APIs in documentation.
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
// discussion of these features please refer to this issue:
|
// discussion of these features please refer to this issue:
|
||||||
//
|
//
|
||||||
// https://github.com/serde-rs/serde/issues/812
|
// https://github.com/serde-rs/serde/issues/812
|
||||||
#![cfg_attr(feature = "unstable", feature(error_in_core, never_type))]
|
#![cfg_attr(feature = "unstable", feature(never_type))]
|
||||||
#![allow(unknown_lints, bare_trait_objects, deprecated)]
|
#![allow(unknown_lints, bare_trait_objects, deprecated)]
|
||||||
// Ignored clippy and clippy_pedantic lints
|
// Ignored clippy and clippy_pedantic lints
|
||||||
#![allow(
|
#![allow(
|
||||||
|
|||||||
@@ -215,6 +215,13 @@ declare_error_trait!(Error: Sized + Debug + Display);
|
|||||||
/// [`linked-hash-map`]: https://crates.io/crates/linked-hash-map
|
/// [`linked-hash-map`]: https://crates.io/crates/linked-hash-map
|
||||||
/// [`serde_derive`]: https://crates.io/crates/serde_derive
|
/// [`serde_derive`]: https://crates.io/crates/serde_derive
|
||||||
/// [derive section of the manual]: https://serde.rs/derive.html
|
/// [derive section of the manual]: https://serde.rs/derive.html
|
||||||
|
#[cfg_attr(
|
||||||
|
not(no_diagnostic_namespace),
|
||||||
|
diagnostic::on_unimplemented(
|
||||||
|
note = "for local types consider adding `#[derive(serde::Serialize)]` to your `{Self}` type",
|
||||||
|
note = "for types from other crates check whether the crate offers a `serde` feature flag",
|
||||||
|
)
|
||||||
|
)]
|
||||||
pub trait Serialize {
|
pub trait Serialize {
|
||||||
/// Serialize this value into the given Serde serializer.
|
/// Serialize this value into the given Serde serializer.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "serde_derive"
|
name = "serde_derive"
|
||||||
version = "1.0.203"
|
version = "1.0.204"
|
||||||
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
|
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
|
||||||
categories = ["no-std", "no-std::no-alloc"]
|
categories = ["no-std", "no-std::no-alloc"]
|
||||||
description = "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]"
|
description = "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]"
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
//!
|
//!
|
||||||
//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
|
//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
|
||||||
|
|
||||||
#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.203")]
|
#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.204")]
|
||||||
#![cfg_attr(not(check_cfg), allow(unexpected_cfgs))]
|
#![cfg_attr(not(check_cfg), allow(unexpected_cfgs))]
|
||||||
// Ignored clippy lints
|
// Ignored clippy lints
|
||||||
#![allow(
|
#![allow(
|
||||||
|
|||||||
@@ -18,4 +18,4 @@ rustversion = "1.0"
|
|||||||
serde = { path = "../serde", features = ["rc"] }
|
serde = { path = "../serde", features = ["rc"] }
|
||||||
serde_derive = { path = "../serde_derive", features = ["deserialize_in_place"] }
|
serde_derive = { path = "../serde_derive", features = ["deserialize_in_place"] }
|
||||||
serde_test = "1.0.176"
|
serde_test = "1.0.176"
|
||||||
trybuild = { version = "1.0.66", features = ["diff"] }
|
trybuild = { version = "1.0.97", features = ["diff"] }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#[cfg_attr(target_os = "emscripten", ignore)]
|
#[cfg_attr(target_os = "emscripten", ignore = "disabled on Emscripten")]
|
||||||
#[rustversion::attr(not(nightly), ignore)]
|
#[rustversion::attr(not(nightly), ignore = "requires nightly")]
|
||||||
#[cfg_attr(miri, ignore)]
|
#[cfg_attr(miri, ignore = "incompatible with miri")]
|
||||||
#[allow(unused_attributes)]
|
#[allow(unused_attributes)]
|
||||||
#[test]
|
#[test]
|
||||||
fn ui() {
|
fn ui() {
|
||||||
|
|||||||
@@ -422,6 +422,7 @@ fn test_gen() {
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
#[serde(remote = "Self")]
|
#[serde(remote = "Self")]
|
||||||
|
#[allow(dead_code)]
|
||||||
struct RemoteSelf;
|
struct RemoteSelf;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
use serde::de::Deserialize;
|
||||||
|
use serde::ser::Serialize;
|
||||||
|
|
||||||
|
fn to_string<T>(_: &T) -> String
|
||||||
|
where
|
||||||
|
T: Serialize,
|
||||||
|
{
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn from_str<'de, T>(_: &'de str) -> T
|
||||||
|
where
|
||||||
|
T: Deserialize<'de>,
|
||||||
|
{
|
||||||
|
unimplemented!()
|
||||||
|
}
|
||||||
|
|
||||||
|
struct MyStruct;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
to_string(&MyStruct);
|
||||||
|
let _: MyStruct = from_str("");
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
error[E0277]: the trait bound `MyStruct: Serialize` is not satisfied
|
||||||
|
--> tests/ui/on_unimplemented.rs:21:15
|
||||||
|
|
|
||||||
|
21 | to_string(&MyStruct);
|
||||||
|
| --------- ^^^^^^^^^ the trait `Serialize` is not implemented for `MyStruct`
|
||||||
|
| |
|
||||||
|
| required by a bound introduced by this call
|
||||||
|
|
|
||||||
|
= note: for local types consider adding `#[derive(serde::Serialize)]` to your `MyStruct` type
|
||||||
|
= note: for types from other crates check whether the crate offers a `serde` feature flag
|
||||||
|
= help: the following other types implement trait `Serialize`:
|
||||||
|
&'a T
|
||||||
|
&'a mut T
|
||||||
|
()
|
||||||
|
(T,)
|
||||||
|
(T0, T1)
|
||||||
|
(T0, T1, T2)
|
||||||
|
(T0, T1, T2, T3)
|
||||||
|
(T0, T1, T2, T3, T4)
|
||||||
|
and $N others
|
||||||
|
note: required by a bound in `to_string`
|
||||||
|
--> tests/ui/on_unimplemented.rs:6:8
|
||||||
|
|
|
||||||
|
4 | fn to_string<T>(_: &T) -> String
|
||||||
|
| --------- required by a bound in this function
|
||||||
|
5 | where
|
||||||
|
6 | T: Serialize,
|
||||||
|
| ^^^^^^^^^ required by this bound in `to_string`
|
||||||
|
|
||||||
|
error[E0277]: the trait bound `MyStruct: Deserialize<'_>` is not satisfied
|
||||||
|
--> tests/ui/on_unimplemented.rs:22:23
|
||||||
|
|
|
||||||
|
22 | let _: MyStruct = from_str("");
|
||||||
|
| ^^^^^^^^^^^^ the trait `Deserialize<'_>` is not implemented for `MyStruct`
|
||||||
|
|
|
||||||
|
= note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyStruct` type
|
||||||
|
= note: for types from other crates check whether the crate offers a `serde` feature flag
|
||||||
|
= help: the following other types implement trait `Deserialize<'de>`:
|
||||||
|
&'a Path
|
||||||
|
&'a [u8]
|
||||||
|
&'a str
|
||||||
|
()
|
||||||
|
(T,)
|
||||||
|
(T0, T1)
|
||||||
|
(T0, T1, T2)
|
||||||
|
(T0, T1, T2, T3)
|
||||||
|
and $N others
|
||||||
|
note: required by a bound in `from_str`
|
||||||
|
--> tests/ui/on_unimplemented.rs:13:8
|
||||||
|
|
|
||||||
|
11 | fn from_str<'de, T>(_: &'de str) -> T
|
||||||
|
| -------- required by a bound in this function
|
||||||
|
12 | where
|
||||||
|
13 | T: Deserialize<'de>,
|
||||||
|
| ^^^^^^^^^^^^^^^^ required by this bound in `from_str`
|
||||||
Reference in New Issue
Block a user