Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: serde-rs/serde
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.0.213
Choose a base ref
...
head repository: serde-rs/serde
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.0.214
Choose a head ref
  • 3 commits
  • 5 files changed
  • 2 contributors

Commits on Oct 25, 2024

  1. Implement IntoDeserializer for all Deserializers in serde::de::value …

    …module
    
    Unfortunately, blanket implementation IntoDeserializer for Deserializer is impossible
    right now because this would be a breaking change. External crates may have this
    such implementation (and serde_json actually have it for Value)
    Mingun committed Oct 25, 2024
    Copy the full SHA
    9cda015 View commit details

Commits on Oct 28, 2024

  1. Merge pull request #2568 from Mingun/into_deserializer-for-deserializers

    Implement `IntoDeserializer` for all `Deserializer`s in `serde::de::value` module
    dtolnay authored Oct 28, 2024
    Copy the full SHA
    210373b View commit details
  2. Release 1.0.214

    dtolnay committed Oct 28, 2024
    Copy the full SHA
    4180621 View commit details
Showing with 179 additions and 5 deletions.
  1. +2 −2 serde/Cargo.toml
  2. +174 −0 serde/src/de/value.rs
  3. +1 −1 serde/src/lib.rs
  4. +1 −1 serde_derive/Cargo.toml
  5. +1 −1 serde_derive/src/lib.rs
4 changes: 2 additions & 2 deletions serde/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "serde"
version = "1.0.213"
version = "1.0.214"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
build = "build.rs"
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
# involves nonpublic APIs which are not bound by semver.
[target.'cfg(any())'.dependencies]
serde_derive = { version = "=1.0.213", path = "../serde_derive" }
serde_derive = { version = "=1.0.214", path = "../serde_derive" }


### FEATURES #################################################################
174 changes: 174 additions & 0 deletions serde/src/de/value.rs
Original file line number Diff line number Diff line change
@@ -175,6 +175,17 @@ where
}
}

impl<'de, E> IntoDeserializer<'de, E> for UnitDeserializer<E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<E> Debug for UnitDeserializer<E> {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter.debug_struct("UnitDeserializer").finish()
@@ -225,6 +236,18 @@ where
}
}

#[cfg(feature = "unstable")]
impl<'de, E> IntoDeserializer<'de, E> for NeverDeserializer<E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

////////////////////////////////////////////////////////////////////////////////

macro_rules! primitive_deserializer {
@@ -279,6 +302,17 @@ macro_rules! primitive_deserializer {
}
}

impl<'de, E> IntoDeserializer<'de, E> for $name<E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<E> Debug for $name<E> {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter
@@ -369,6 +403,17 @@ where
}
}

impl<'de, E> IntoDeserializer<'de, E> for U32Deserializer<E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, E> de::EnumAccess<'de> for U32Deserializer<E>
where
E: de::Error,
@@ -458,6 +503,17 @@ where
}
}

impl<'de, 'a, E> IntoDeserializer<'de, E> for StrDeserializer<'a, E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, 'a, E> de::EnumAccess<'de> for StrDeserializer<'a, E>
where
E: de::Error,
@@ -537,6 +593,17 @@ where
}
}

impl<'de, E> IntoDeserializer<'de, E> for BorrowedStrDeserializer<'de, E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, E> de::EnumAccess<'de> for BorrowedStrDeserializer<'de, E>
where
E: de::Error,
@@ -640,6 +707,18 @@ where
}
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<'de, E> IntoDeserializer<'de, E> for StringDeserializer<E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<'de, E> de::EnumAccess<'de> for StringDeserializer<E>
where
@@ -748,6 +827,18 @@ where
}
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<'de, 'a, E> IntoDeserializer<'de, E> for CowStrDeserializer<'a, E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<'de, 'a, E> de::EnumAccess<'de> for CowStrDeserializer<'a, E>
where
@@ -825,6 +916,17 @@ where
}
}

impl<'de, 'a, E> IntoDeserializer<'de, E> for BytesDeserializer<'a, E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'a, E> Debug for BytesDeserializer<'a, E> {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter
@@ -873,6 +975,17 @@ where
}
}

impl<'de, E> IntoDeserializer<'de, E> for BorrowedBytesDeserializer<'de, E>
where
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, E> Debug for BorrowedBytesDeserializer<'de, E> {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
formatter
@@ -952,6 +1065,19 @@ where
}
}

impl<'de, I, T, E> IntoDeserializer<'de, E> for SeqDeserializer<I, E>
where
I: Iterator<Item = T>,
T: IntoDeserializer<'de, E>,
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, I, T, E> de::SeqAccess<'de> for SeqDeserializer<I, E>
where
I: Iterator<Item = T>,
@@ -1083,6 +1209,17 @@ where
}
}

impl<'de, A> IntoDeserializer<'de, A::Error> for SeqAccessDeserializer<A>
where
A: de::SeqAccess<'de>,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

////////////////////////////////////////////////////////////////////////////////

/// A deserializer that iterates over a map.
@@ -1197,6 +1334,21 @@ where
}
}

impl<'de, I, E> IntoDeserializer<'de, E> for MapDeserializer<'de, I, E>
where
I: Iterator,
I::Item: private::Pair,
First<I::Item>: IntoDeserializer<'de, E>,
Second<I::Item>: IntoDeserializer<'de, E>,
E: de::Error,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, I, E> de::MapAccess<'de> for MapDeserializer<'de, I, E>
where
I: Iterator,
@@ -1498,6 +1650,17 @@ where
}
}

impl<'de, A> IntoDeserializer<'de, A::Error> for MapAccessDeserializer<A>
where
A: de::MapAccess<'de>,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

impl<'de, A> de::EnumAccess<'de> for MapAccessDeserializer<A>
where
A: de::MapAccess<'de>,
@@ -1551,6 +1714,17 @@ where
}
}

impl<'de, A> IntoDeserializer<'de, A::Error> for EnumAccessDeserializer<A>
where
A: de::EnumAccess<'de>,
{
type Deserializer = Self;

fn into_deserializer(self) -> Self {
self
}
}

////////////////////////////////////////////////////////////////////////////////

mod private {
2 changes: 1 addition & 1 deletion serde/src/lib.rs
Original file line number Diff line number Diff line change
@@ -95,7 +95,7 @@
////////////////////////////////////////////////////////////////////////////////

// Serde types in rustdoc of other crates get linked to here.
#![doc(html_root_url = "https://docs.rs/serde/1.0.213")]
#![doc(html_root_url = "https://docs.rs/serde/1.0.214")]
// Support using Serde without the standard library!
#![cfg_attr(not(feature = "std"), no_std)]
// Show which crate feature enables conditionally compiled APIs in documentation.
2 changes: 1 addition & 1 deletion serde_derive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "serde_derive"
version = "1.0.213"
version = "1.0.214"
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
categories = ["no-std", "no-std::no-alloc"]
description = "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]"
2 changes: 1 addition & 1 deletion serde_derive/src/lib.rs
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@
//!
//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.213")]
#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.214")]
#![cfg_attr(not(check_cfg), allow(unexpected_cfgs))]
// Ignored clippy lints
#![allow(