mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-14 05:51:01 +00:00
Merge pull request #2980 from dtolnay/private
Use differently named __private module per patch release
This commit is contained in:
@@ -1,13 +1,29 @@
|
|||||||
use std::env;
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
use std::path::PathBuf;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
|
const PRIVATE: &str = "\
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub mod __private$$ {
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub use crate::private::*;
|
||||||
|
}
|
||||||
|
use serde_core::__private$$ as serde_core_private;
|
||||||
|
";
|
||||||
|
|
||||||
// The rustc-cfg strings below are *not* public API. Please let us know by
|
// The rustc-cfg strings below are *not* public API. Please let us know by
|
||||||
// opening a GitHub issue if your build environment requires some way to enable
|
// opening a GitHub issue if your build environment requires some way to enable
|
||||||
// these cfgs other than by executing our build script.
|
// these cfgs other than by executing our build script.
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("cargo:rerun-if-changed=build.rs");
|
println!("cargo:rerun-if-changed=build.rs");
|
||||||
|
|
||||||
|
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
||||||
|
let patch_version = env::var("CARGO_PKG_VERSION_PATCH").unwrap();
|
||||||
|
let module = PRIVATE.replace("$$", &patch_version);
|
||||||
|
fs::write(out_dir.join("private.rs"), module).unwrap();
|
||||||
|
|
||||||
let minor = match rustc_minor_version() {
|
let minor = match rustc_minor_version() {
|
||||||
Some(minor) => minor,
|
Some(minor) => minor,
|
||||||
None => return,
|
None => return,
|
||||||
|
|||||||
+3
-2
@@ -239,8 +239,9 @@ mod integer128;
|
|||||||
|
|
||||||
// Used by generated code and doc tests. Not public API.
|
// Used by generated code and doc tests. Not public API.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[path = "private/mod.rs"]
|
mod private;
|
||||||
pub mod __private;
|
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/private.rs"));
|
||||||
|
|
||||||
// Re-export #[derive(Serialize, Deserialize)].
|
// Re-export #[derive(Serialize, Deserialize)].
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ pub use self::content::{
|
|||||||
UntaggedUnitVisitor,
|
UntaggedUnitVisitor,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub use serde_core::__private::InPlaceSeed;
|
pub use crate::serde_core_private::InPlaceSeed;
|
||||||
|
|
||||||
/// If the missing field is of type `Option<T>` then treat is as `None`,
|
/// If the missing field is of type `Option<T>` then treat is as `None`,
|
||||||
/// otherwise it is an error.
|
/// otherwise it is an error.
|
||||||
@@ -216,8 +216,8 @@ mod content {
|
|||||||
self, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected, IgnoredAny,
|
self, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected, IgnoredAny,
|
||||||
MapAccess, SeqAccess, Unexpected, Visitor,
|
MapAccess, SeqAccess, Unexpected, Visitor,
|
||||||
};
|
};
|
||||||
use serde_core::__private::size_hint;
|
use crate::serde_core_private::size_hint;
|
||||||
pub use serde_core::__private::Content;
|
pub use crate::serde_core_private::Content;
|
||||||
|
|
||||||
pub fn content_as_str<'a, 'de>(content: &'a Content<'de>) -> Option<&'a str> {
|
pub fn content_as_str<'a, 'de>(content: &'a Content<'de>) -> Option<&'a str> {
|
||||||
match *content {
|
match *content {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ pub use crate::lib::option::Option::{self, None, Some};
|
|||||||
pub use crate::lib::ptr;
|
pub use crate::lib::ptr;
|
||||||
pub use crate::lib::result::Result::{self, Err, Ok};
|
pub use crate::lib::result::Result::{self, Err, Ok};
|
||||||
|
|
||||||
pub use serde_core::__private::string::from_utf8_lossy;
|
pub use crate::serde_core_private::string::from_utf8_lossy;
|
||||||
|
|
||||||
#[cfg(any(feature = "alloc", feature = "std"))]
|
#[cfg(any(feature = "alloc", feature = "std"))]
|
||||||
pub use crate::lib::{ToString, Vec};
|
pub use crate::lib::{ToString, Vec};
|
||||||
|
|||||||
@@ -1,13 +1,28 @@
|
|||||||
use std::env;
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
use std::path::PathBuf;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
|
||||||
|
const PRIVATE: &str = "\
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub mod __private$$ {
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub use crate::private::*;
|
||||||
|
}
|
||||||
|
";
|
||||||
|
|
||||||
// The rustc-cfg strings below are *not* public API. Please let us know by
|
// The rustc-cfg strings below are *not* public API. Please let us know by
|
||||||
// opening a GitHub issue if your build environment requires some way to enable
|
// opening a GitHub issue if your build environment requires some way to enable
|
||||||
// these cfgs other than by executing our build script.
|
// these cfgs other than by executing our build script.
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("cargo:rerun-if-changed=build.rs");
|
println!("cargo:rerun-if-changed=build.rs");
|
||||||
|
|
||||||
|
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
||||||
|
let patch_version = env::var("CARGO_PKG_VERSION_PATCH").unwrap();
|
||||||
|
let module = PRIVATE.replace("$$", &patch_version);
|
||||||
|
fs::write(out_dir.join("private.rs"), module).unwrap();
|
||||||
|
|
||||||
let minor = match rustc_minor_version() {
|
let minor = match rustc_minor_version() {
|
||||||
Some(minor) => minor,
|
Some(minor) => minor,
|
||||||
None => return,
|
None => return,
|
||||||
|
|||||||
+12
-3
@@ -252,9 +252,18 @@ pub use crate::ser::{Serialize, Serializer};
|
|||||||
|
|
||||||
// Used by generated code. Not public API.
|
// Used by generated code. Not public API.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[path = "private/mod.rs"]
|
mod private;
|
||||||
pub mod __private;
|
|
||||||
use self::__private as private;
|
// Used by declarative macro generated code. Not public API.
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub mod __private {
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub use crate::private::doc;
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub use core::result::Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/private.rs"));
|
||||||
|
|
||||||
#[cfg(all(not(feature = "std"), no_core_error))]
|
#[cfg(all(not(feature = "std"), no_core_error))]
|
||||||
mod std_error;
|
mod std_error;
|
||||||
|
|||||||
+261
-258
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
|||||||
//! A Serde ast, parsed from the Syn ast and ready to generate Rust code.
|
//! A Serde ast, parsed from the Syn ast and ready to generate Rust code.
|
||||||
|
|
||||||
use crate::internals::{attr, check, Ctxt, Derive};
|
use crate::internals::{attr, check, Ctxt, Derive};
|
||||||
|
use proc_macro2::Ident;
|
||||||
use syn::punctuated::Punctuated;
|
use syn::punctuated::Punctuated;
|
||||||
use syn::Token;
|
use syn::Token;
|
||||||
|
|
||||||
@@ -62,13 +63,17 @@ impl<'a> Container<'a> {
|
|||||||
cx: &Ctxt,
|
cx: &Ctxt,
|
||||||
item: &'a syn::DeriveInput,
|
item: &'a syn::DeriveInput,
|
||||||
derive: Derive,
|
derive: Derive,
|
||||||
|
private: &Ident,
|
||||||
) -> Option<Container<'a>> {
|
) -> Option<Container<'a>> {
|
||||||
let attrs = attr::Container::from_ast(cx, item);
|
let attrs = attr::Container::from_ast(cx, item);
|
||||||
|
|
||||||
let mut data = match &item.data {
|
let mut data = match &item.data {
|
||||||
syn::Data::Enum(data) => Data::Enum(enum_from_ast(cx, &data.variants, attrs.default())),
|
syn::Data::Enum(data) => {
|
||||||
|
Data::Enum(enum_from_ast(cx, &data.variants, attrs.default(), private))
|
||||||
|
}
|
||||||
syn::Data::Struct(data) => {
|
syn::Data::Struct(data) => {
|
||||||
let (style, fields) = struct_from_ast(cx, &data.fields, None, attrs.default());
|
let (style, fields) =
|
||||||
|
struct_from_ast(cx, &data.fields, None, attrs.default(), private);
|
||||||
Data::Struct(style, fields)
|
Data::Struct(style, fields)
|
||||||
}
|
}
|
||||||
syn::Data::Union(_) => {
|
syn::Data::Union(_) => {
|
||||||
@@ -129,13 +134,19 @@ fn enum_from_ast<'a>(
|
|||||||
cx: &Ctxt,
|
cx: &Ctxt,
|
||||||
variants: &'a Punctuated<syn::Variant, Token![,]>,
|
variants: &'a Punctuated<syn::Variant, Token![,]>,
|
||||||
container_default: &attr::Default,
|
container_default: &attr::Default,
|
||||||
|
private: &Ident,
|
||||||
) -> Vec<Variant<'a>> {
|
) -> Vec<Variant<'a>> {
|
||||||
let variants: Vec<Variant> = variants
|
let variants: Vec<Variant> = variants
|
||||||
.iter()
|
.iter()
|
||||||
.map(|variant| {
|
.map(|variant| {
|
||||||
let attrs = attr::Variant::from_ast(cx, variant);
|
let attrs = attr::Variant::from_ast(cx, variant);
|
||||||
let (style, fields) =
|
let (style, fields) = struct_from_ast(
|
||||||
struct_from_ast(cx, &variant.fields, Some(&attrs), container_default);
|
cx,
|
||||||
|
&variant.fields,
|
||||||
|
Some(&attrs),
|
||||||
|
container_default,
|
||||||
|
private,
|
||||||
|
);
|
||||||
Variant {
|
Variant {
|
||||||
ident: variant.ident.clone(),
|
ident: variant.ident.clone(),
|
||||||
attrs,
|
attrs,
|
||||||
@@ -165,19 +176,20 @@ fn struct_from_ast<'a>(
|
|||||||
fields: &'a syn::Fields,
|
fields: &'a syn::Fields,
|
||||||
attrs: Option<&attr::Variant>,
|
attrs: Option<&attr::Variant>,
|
||||||
container_default: &attr::Default,
|
container_default: &attr::Default,
|
||||||
|
private: &Ident,
|
||||||
) -> (Style, Vec<Field<'a>>) {
|
) -> (Style, Vec<Field<'a>>) {
|
||||||
match fields {
|
match fields {
|
||||||
syn::Fields::Named(fields) => (
|
syn::Fields::Named(fields) => (
|
||||||
Style::Struct,
|
Style::Struct,
|
||||||
fields_from_ast(cx, &fields.named, attrs, container_default),
|
fields_from_ast(cx, &fields.named, attrs, container_default, private),
|
||||||
),
|
),
|
||||||
syn::Fields::Unnamed(fields) if fields.unnamed.len() == 1 => (
|
syn::Fields::Unnamed(fields) if fields.unnamed.len() == 1 => (
|
||||||
Style::Newtype,
|
Style::Newtype,
|
||||||
fields_from_ast(cx, &fields.unnamed, attrs, container_default),
|
fields_from_ast(cx, &fields.unnamed, attrs, container_default, private),
|
||||||
),
|
),
|
||||||
syn::Fields::Unnamed(fields) => (
|
syn::Fields::Unnamed(fields) => (
|
||||||
Style::Tuple,
|
Style::Tuple,
|
||||||
fields_from_ast(cx, &fields.unnamed, attrs, container_default),
|
fields_from_ast(cx, &fields.unnamed, attrs, container_default, private),
|
||||||
),
|
),
|
||||||
syn::Fields::Unit => (Style::Unit, Vec::new()),
|
syn::Fields::Unit => (Style::Unit, Vec::new()),
|
||||||
}
|
}
|
||||||
@@ -188,6 +200,7 @@ fn fields_from_ast<'a>(
|
|||||||
fields: &'a Punctuated<syn::Field, Token![,]>,
|
fields: &'a Punctuated<syn::Field, Token![,]>,
|
||||||
attrs: Option<&attr::Variant>,
|
attrs: Option<&attr::Variant>,
|
||||||
container_default: &attr::Default,
|
container_default: &attr::Default,
|
||||||
|
private: &Ident,
|
||||||
) -> Vec<Field<'a>> {
|
) -> Vec<Field<'a>> {
|
||||||
fields
|
fields
|
||||||
.iter()
|
.iter()
|
||||||
@@ -197,7 +210,7 @@ fn fields_from_ast<'a>(
|
|||||||
Some(ident) => syn::Member::Named(ident.clone()),
|
Some(ident) => syn::Member::Named(ident.clone()),
|
||||||
None => syn::Member::Unnamed(i.into()),
|
None => syn::Member::Unnamed(i.into()),
|
||||||
},
|
},
|
||||||
attrs: attr::Field::from_ast(cx, i, field, attrs, container_default),
|
attrs: attr::Field::from_ast(cx, i, field, attrs, container_default, private),
|
||||||
ty: &field.ty,
|
ty: &field.ty,
|
||||||
original: field,
|
original: field,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1024,6 +1024,7 @@ impl Field {
|
|||||||
field: &syn::Field,
|
field: &syn::Field,
|
||||||
attrs: Option<&Variant>,
|
attrs: Option<&Variant>,
|
||||||
container_default: &Default,
|
container_default: &Default,
|
||||||
|
private: &Ident,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
let mut ser_name = Attr::none(cx, RENAME);
|
let mut ser_name = Attr::none(cx, RENAME);
|
||||||
let mut de_name = Attr::none(cx, RENAME);
|
let mut de_name = Attr::none(cx, RENAME);
|
||||||
@@ -1217,7 +1218,7 @@ impl Field {
|
|||||||
};
|
};
|
||||||
let span = Span::call_site();
|
let span = Span::call_site();
|
||||||
path.segments.push(Ident::new("_serde", span).into());
|
path.segments.push(Ident::new("_serde", span).into());
|
||||||
path.segments.push(Ident::new("__private", span).into());
|
path.segments.push(private.clone().into());
|
||||||
path.segments.push(Ident::new("de", span).into());
|
path.segments.push(Ident::new("de", span).into());
|
||||||
path.segments
|
path.segments
|
||||||
.push(Ident::new("borrow_cow_str", span).into());
|
.push(Ident::new("borrow_cow_str", span).into());
|
||||||
@@ -1234,7 +1235,7 @@ impl Field {
|
|||||||
};
|
};
|
||||||
let span = Span::call_site();
|
let span = Span::call_site();
|
||||||
path.segments.push(Ident::new("_serde", span).into());
|
path.segments.push(Ident::new("_serde", span).into());
|
||||||
path.segments.push(Ident::new("__private", span).into());
|
path.segments.push(private.clone().into());
|
||||||
path.segments.push(Ident::new("de", span).into());
|
path.segments.push(Ident::new("de", span).into());
|
||||||
path.segments
|
path.segments
|
||||||
.push(Ident::new("borrow_cow_bytes", span).into());
|
.push(Ident::new("borrow_cow_bytes", span).into());
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ extern crate proc_macro;
|
|||||||
mod internals;
|
mod internals;
|
||||||
|
|
||||||
use proc_macro::TokenStream;
|
use proc_macro::TokenStream;
|
||||||
|
use proc_macro2::{Ident, Span};
|
||||||
|
use quote::{ToTokens, TokenStreamExt as _};
|
||||||
use syn::parse_macro_input;
|
use syn::parse_macro_input;
|
||||||
use syn::DeriveInput;
|
use syn::DeriveInput;
|
||||||
|
|
||||||
@@ -89,6 +91,24 @@ mod pretend;
|
|||||||
mod ser;
|
mod ser;
|
||||||
mod this;
|
mod this;
|
||||||
|
|
||||||
|
#[allow(non_camel_case_types)]
|
||||||
|
struct private;
|
||||||
|
|
||||||
|
impl private {
|
||||||
|
fn ident(&self) -> Ident {
|
||||||
|
Ident::new(
|
||||||
|
concat!("__private", env!("CARGO_PKG_VERSION_PATCH")),
|
||||||
|
Span::call_site(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToTokens for private {
|
||||||
|
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
|
||||||
|
tokens.append(self.ident());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[proc_macro_derive(Serialize, attributes(serde))]
|
#[proc_macro_derive(Serialize, attributes(serde))]
|
||||||
pub fn derive_serialize(input: TokenStream) -> TokenStream {
|
pub fn derive_serialize(input: TokenStream) -> TokenStream {
|
||||||
let mut input = parse_macro_input!(input as DeriveInput);
|
let mut input = parse_macro_input!(input as DeriveInput);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use crate::internals::ast::{Container, Data, Field, Style, Variant};
|
use crate::internals::ast::{Container, Data, Field, Style, Variant};
|
||||||
|
use crate::private;
|
||||||
use proc_macro2::TokenStream;
|
use proc_macro2::TokenStream;
|
||||||
use quote::{format_ident, quote};
|
use quote::{format_ident, quote};
|
||||||
|
|
||||||
@@ -83,8 +84,8 @@ fn pretend_fields_used_struct(cont: &Container, fields: &[Field]) -> TokenStream
|
|||||||
let placeholders = (0usize..).map(|i| format_ident!("__v{}", i));
|
let placeholders = (0usize..).map(|i| format_ident!("__v{}", i));
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
match _serde::__private::None::<&#type_ident #ty_generics> {
|
match _serde::#private::None::<&#type_ident #ty_generics> {
|
||||||
_serde::__private::Some(#type_ident { #(#members: #placeholders),* }) => {}
|
_serde::#private::Some(#type_ident { #(#members: #placeholders),* }) => {}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,11 +97,12 @@ fn pretend_fields_used_struct_packed(cont: &Container, fields: &[Field]) -> Toke
|
|||||||
|
|
||||||
let members = fields.iter().map(|field| &field.member).collect::<Vec<_>>();
|
let members = fields.iter().map(|field| &field.member).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let private2 = private;
|
||||||
quote! {
|
quote! {
|
||||||
match _serde::__private::None::<&#type_ident #ty_generics> {
|
match _serde::#private::None::<&#type_ident #ty_generics> {
|
||||||
_serde::__private::Some(__v @ #type_ident { #(#members: _),* }) => {
|
_serde::#private::Some(__v @ #type_ident { #(#members: _),* }) => {
|
||||||
#(
|
#(
|
||||||
let _ = _serde::__private::ptr::addr_of!(__v.#members);
|
let _ = _serde::#private2::ptr::addr_of!(__v.#members);
|
||||||
)*
|
)*
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
@@ -125,10 +127,11 @@ fn pretend_fields_used_enum(cont: &Container, variants: &[Variant]) -> TokenStre
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let private2 = private;
|
||||||
quote! {
|
quote! {
|
||||||
match _serde::__private::None::<&#type_ident #ty_generics> {
|
match _serde::#private::None::<&#type_ident #ty_generics> {
|
||||||
#(
|
#(
|
||||||
_serde::__private::Some(#patterns) => {}
|
_serde::#private2::Some(#patterns) => {}
|
||||||
)*
|
)*
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
@@ -172,8 +175,8 @@ fn pretend_variants_used(cont: &Container) -> TokenStream {
|
|||||||
};
|
};
|
||||||
|
|
||||||
quote! {
|
quote! {
|
||||||
match _serde::__private::None {
|
match _serde::#private::None {
|
||||||
_serde::__private::Some((#(#placeholders,)*)) => {
|
_serde::#private::Some((#(#placeholders,)*)) => {
|
||||||
let _ = #type_ident::#variant_ident #turbofish #pat;
|
let _ = #type_ident::#variant_ident #turbofish #pat;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|||||||
+26
-26
@@ -2,7 +2,7 @@ use crate::fragment::{Fragment, Match, Stmts};
|
|||||||
use crate::internals::ast::{Container, Data, Field, Style, Variant};
|
use crate::internals::ast::{Container, Data, Field, Style, Variant};
|
||||||
use crate::internals::name::Name;
|
use crate::internals::name::Name;
|
||||||
use crate::internals::{attr, replace_receiver, Ctxt, Derive};
|
use crate::internals::{attr, replace_receiver, Ctxt, Derive};
|
||||||
use crate::{bound, dummy, pretend, this};
|
use crate::{bound, dummy, pretend, private, this};
|
||||||
use proc_macro2::{Span, TokenStream};
|
use proc_macro2::{Span, TokenStream};
|
||||||
use quote::{quote, quote_spanned};
|
use quote::{quote, quote_spanned};
|
||||||
use syn::spanned::Spanned;
|
use syn::spanned::Spanned;
|
||||||
@@ -12,7 +12,7 @@ pub fn expand_derive_serialize(input: &mut syn::DeriveInput) -> syn::Result<Toke
|
|||||||
replace_receiver(input);
|
replace_receiver(input);
|
||||||
|
|
||||||
let ctxt = Ctxt::new();
|
let ctxt = Ctxt::new();
|
||||||
let cont = match Container::from_ast(&ctxt, input, Derive::Serialize) {
|
let cont = match Container::from_ast(&ctxt, input, Derive::Serialize, &private.ident()) {
|
||||||
Some(cont) => cont,
|
Some(cont) => cont,
|
||||||
None => return Err(ctxt.check().unwrap_err()),
|
None => return Err(ctxt.check().unwrap_err()),
|
||||||
};
|
};
|
||||||
@@ -31,7 +31,7 @@ pub fn expand_derive_serialize(input: &mut syn::DeriveInput) -> syn::Result<Toke
|
|||||||
quote! {
|
quote! {
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl #impl_generics #ident #ty_generics #where_clause {
|
impl #impl_generics #ident #ty_generics #where_clause {
|
||||||
#vis fn serialize<__S>(__self: &#remote #ty_generics, __serializer: __S) -> #serde::__private::Result<__S::Ok, __S::Error>
|
#vis fn serialize<__S>(__self: &#remote #ty_generics, __serializer: __S) -> #serde::#private::Result<__S::Ok, __S::Error>
|
||||||
where
|
where
|
||||||
__S: #serde::Serializer,
|
__S: #serde::Serializer,
|
||||||
{
|
{
|
||||||
@@ -44,7 +44,7 @@ pub fn expand_derive_serialize(input: &mut syn::DeriveInput) -> syn::Result<Toke
|
|||||||
quote! {
|
quote! {
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl #impl_generics #serde::Serialize for #ident #ty_generics #where_clause {
|
impl #impl_generics #serde::Serialize for #ident #ty_generics #where_clause {
|
||||||
fn serialize<__S>(&self, __serializer: __S) -> #serde::__private::Result<__S::Ok, __S::Error>
|
fn serialize<__S>(&self, __serializer: __S) -> #serde::#private::Result<__S::Ok, __S::Error>
|
||||||
where
|
where
|
||||||
__S: #serde::Serializer,
|
__S: #serde::Serializer,
|
||||||
{
|
{
|
||||||
@@ -212,7 +212,7 @@ fn serialize_into(params: &Parameters, type_into: &syn::Type) -> Fragment {
|
|||||||
let self_var = ¶ms.self_var;
|
let self_var = ¶ms.self_var;
|
||||||
quote_block! {
|
quote_block! {
|
||||||
_serde::Serialize::serialize(
|
_serde::Serialize::serialize(
|
||||||
&_serde::__private::Into::<#type_into>::into(_serde::__private::Clone::clone(#self_var)),
|
&_serde::#private::Into::<#type_into>::into(_serde::#private::Clone::clone(#self_var)),
|
||||||
__serializer)
|
__serializer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -382,7 +382,7 @@ fn serialize_struct_as_map(
|
|||||||
let let_mut = mut_if(serialized_fields.peek().is_some() || tag_field_exists);
|
let let_mut = mut_if(serialized_fields.peek().is_some() || tag_field_exists);
|
||||||
|
|
||||||
quote_block! {
|
quote_block! {
|
||||||
let #let_mut __serde_state = _serde::Serializer::serialize_map(__serializer, _serde::__private::None)?;
|
let #let_mut __serde_state = _serde::Serializer::serialize_map(__serializer, _serde::#private::None)?;
|
||||||
#tag_field
|
#tag_field
|
||||||
#(#serialize_fields)*
|
#(#serialize_fields)*
|
||||||
_serde::ser::SerializeMap::end(__serde_state)
|
_serde::ser::SerializeMap::end(__serde_state)
|
||||||
@@ -404,7 +404,7 @@ fn serialize_enum(params: &Parameters, variants: &[Variant], cattrs: &attr::Cont
|
|||||||
|
|
||||||
if cattrs.remote().is_some() && cattrs.non_exhaustive() {
|
if cattrs.remote().is_some() && cattrs.non_exhaustive() {
|
||||||
arms.push(quote! {
|
arms.push(quote! {
|
||||||
ref unrecognized => _serde::__private::Err(_serde::ser::Error::custom(_serde::__private::ser::CannotSerializeVariant(unrecognized))),
|
ref unrecognized => _serde::#private::Err(_serde::ser::Error::custom(_serde::#private::ser::CannotSerializeVariant(unrecognized))),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,7 +431,7 @@ fn serialize_variant(
|
|||||||
variant_ident
|
variant_ident
|
||||||
);
|
);
|
||||||
let skipped_err = quote! {
|
let skipped_err = quote! {
|
||||||
_serde::__private::Err(_serde::ser::Error::custom(#skipped_msg))
|
_serde::#private::Err(_serde::ser::Error::custom(#skipped_msg))
|
||||||
};
|
};
|
||||||
let fields_pat = match variant.style {
|
let fields_pat = match variant.style {
|
||||||
Style::Unit => quote!(),
|
Style::Unit => quote!(),
|
||||||
@@ -585,7 +585,7 @@ fn serialize_internally_tagged_variant(
|
|||||||
if let Some(path) = variant.attrs.serialize_with() {
|
if let Some(path) = variant.attrs.serialize_with() {
|
||||||
let ser = wrap_serialize_variant_with(params, path, variant);
|
let ser = wrap_serialize_variant_with(params, path, variant);
|
||||||
return quote_expr! {
|
return quote_expr! {
|
||||||
_serde::__private::ser::serialize_tagged_newtype(
|
_serde::#private::ser::serialize_tagged_newtype(
|
||||||
__serializer,
|
__serializer,
|
||||||
#enum_ident_str,
|
#enum_ident_str,
|
||||||
#variant_ident_str,
|
#variant_ident_str,
|
||||||
@@ -614,7 +614,7 @@ fn serialize_internally_tagged_variant(
|
|||||||
}
|
}
|
||||||
|
|
||||||
let span = field.original.span();
|
let span = field.original.span();
|
||||||
let func = quote_spanned!(span=> _serde::__private::ser::serialize_tagged_newtype);
|
let func = quote_spanned!(span=> _serde::#private::ser::serialize_tagged_newtype);
|
||||||
quote_expr! {
|
quote_expr! {
|
||||||
#func(
|
#func(
|
||||||
__serializer,
|
__serializer,
|
||||||
@@ -648,7 +648,7 @@ fn serialize_adjacently_tagged_variant(
|
|||||||
let type_name = cattrs.name().serialize_name();
|
let type_name = cattrs.name().serialize_name();
|
||||||
let variant_name = variant.attrs.name().serialize_name();
|
let variant_name = variant.attrs.name().serialize_name();
|
||||||
let serialize_variant = quote! {
|
let serialize_variant = quote! {
|
||||||
&_serde::__private::ser::AdjacentlyTaggedEnumVariant {
|
&_serde::#private::ser::AdjacentlyTaggedEnumVariant {
|
||||||
enum_name: #type_name,
|
enum_name: #type_name,
|
||||||
variant_index: #variant_index,
|
variant_index: #variant_index,
|
||||||
variant_name: #variant_name,
|
variant_name: #variant_name,
|
||||||
@@ -731,12 +731,12 @@ fn serialize_adjacently_tagged_variant(
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct __AdjacentlyTagged #wrapper_generics #where_clause {
|
struct __AdjacentlyTagged #wrapper_generics #where_clause {
|
||||||
data: (#(&'__a #fields_ty,)*),
|
data: (#(&'__a #fields_ty,)*),
|
||||||
phantom: _serde::__private::PhantomData<#this_type #ty_generics>,
|
phantom: _serde::#private::PhantomData<#this_type #ty_generics>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl #wrapper_impl_generics _serde::Serialize for __AdjacentlyTagged #wrapper_ty_generics #where_clause {
|
impl #wrapper_impl_generics _serde::Serialize for __AdjacentlyTagged #wrapper_ty_generics #where_clause {
|
||||||
fn serialize<__S>(&self, __serializer: __S) -> _serde::__private::Result<__S::Ok, __S::Error>
|
fn serialize<__S>(&self, __serializer: __S) -> _serde::#private::Result<__S::Ok, __S::Error>
|
||||||
where
|
where
|
||||||
__S: _serde::Serializer,
|
__S: _serde::Serializer,
|
||||||
{
|
{
|
||||||
@@ -754,7 +754,7 @@ fn serialize_adjacently_tagged_variant(
|
|||||||
_serde::ser::SerializeStruct::serialize_field(
|
_serde::ser::SerializeStruct::serialize_field(
|
||||||
&mut __struct, #content, &__AdjacentlyTagged {
|
&mut __struct, #content, &__AdjacentlyTagged {
|
||||||
data: (#(#fields_ident,)*),
|
data: (#(#fields_ident,)*),
|
||||||
phantom: _serde::__private::PhantomData::<#this_type #ty_generics>,
|
phantom: _serde::#private::PhantomData::<#this_type #ty_generics>,
|
||||||
})?;
|
})?;
|
||||||
_serde::ser::SerializeStruct::end(__struct)
|
_serde::ser::SerializeStruct::end(__struct)
|
||||||
}
|
}
|
||||||
@@ -996,19 +996,19 @@ fn serialize_struct_variant_with_flatten(
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct __EnumFlatten #wrapper_generics #where_clause {
|
struct __EnumFlatten #wrapper_generics #where_clause {
|
||||||
data: (#(&'__a #fields_ty,)*),
|
data: (#(&'__a #fields_ty,)*),
|
||||||
phantom: _serde::__private::PhantomData<#this_type #ty_generics>,
|
phantom: _serde::#private::PhantomData<#this_type #ty_generics>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl #wrapper_impl_generics _serde::Serialize for __EnumFlatten #wrapper_ty_generics #where_clause {
|
impl #wrapper_impl_generics _serde::Serialize for __EnumFlatten #wrapper_ty_generics #where_clause {
|
||||||
fn serialize<__S>(&self, __serializer: __S) -> _serde::__private::Result<__S::Ok, __S::Error>
|
fn serialize<__S>(&self, __serializer: __S) -> _serde::#private::Result<__S::Ok, __S::Error>
|
||||||
where
|
where
|
||||||
__S: _serde::Serializer,
|
__S: _serde::Serializer,
|
||||||
{
|
{
|
||||||
let (#(#members,)*) = self.data;
|
let (#(#members,)*) = self.data;
|
||||||
let #let_mut __serde_state = _serde::Serializer::serialize_map(
|
let #let_mut __serde_state = _serde::Serializer::serialize_map(
|
||||||
__serializer,
|
__serializer,
|
||||||
_serde::__private::None)?;
|
_serde::#private::None)?;
|
||||||
#(#serialize_fields)*
|
#(#serialize_fields)*
|
||||||
_serde::ser::SerializeMap::end(__serde_state)
|
_serde::ser::SerializeMap::end(__serde_state)
|
||||||
}
|
}
|
||||||
@@ -1021,7 +1021,7 @@ fn serialize_struct_variant_with_flatten(
|
|||||||
#variant_name,
|
#variant_name,
|
||||||
&__EnumFlatten {
|
&__EnumFlatten {
|
||||||
data: (#(#members,)*),
|
data: (#(#members,)*),
|
||||||
phantom: _serde::__private::PhantomData::<#this_type #ty_generics>,
|
phantom: _serde::#private::PhantomData::<#this_type #ty_generics>,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1029,7 +1029,7 @@ fn serialize_struct_variant_with_flatten(
|
|||||||
quote_block! {
|
quote_block! {
|
||||||
let #let_mut __serde_state = _serde::Serializer::serialize_map(
|
let #let_mut __serde_state = _serde::Serializer::serialize_map(
|
||||||
__serializer,
|
__serializer,
|
||||||
_serde::__private::None)?;
|
_serde::#private::None)?;
|
||||||
_serde::ser::SerializeMap::serialize_entry(
|
_serde::ser::SerializeMap::serialize_entry(
|
||||||
&mut __serde_state,
|
&mut __serde_state,
|
||||||
#tag,
|
#tag,
|
||||||
@@ -1043,7 +1043,7 @@ fn serialize_struct_variant_with_flatten(
|
|||||||
quote_block! {
|
quote_block! {
|
||||||
let #let_mut __serde_state = _serde::Serializer::serialize_map(
|
let #let_mut __serde_state = _serde::Serializer::serialize_map(
|
||||||
__serializer,
|
__serializer,
|
||||||
_serde::__private::None)?;
|
_serde::#private::None)?;
|
||||||
#(#serialize_fields)*
|
#(#serialize_fields)*
|
||||||
_serde::ser::SerializeMap::end(__serde_state)
|
_serde::ser::SerializeMap::end(__serde_state)
|
||||||
}
|
}
|
||||||
@@ -1132,7 +1132,7 @@ fn serialize_struct_visitor(
|
|||||||
let ser = if field.attrs.flatten() {
|
let ser = if field.attrs.flatten() {
|
||||||
let func = quote_spanned!(span=> _serde::Serialize::serialize);
|
let func = quote_spanned!(span=> _serde::Serialize::serialize);
|
||||||
quote! {
|
quote! {
|
||||||
#func(&#field_expr, _serde::__private::ser::FlatMapSerializer(&mut __serde_state))?;
|
#func(&#field_expr, _serde::#private::ser::FlatMapSerializer(&mut __serde_state))?;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let func = struct_trait.serialize_field(span);
|
let func = struct_trait.serialize_field(span);
|
||||||
@@ -1239,12 +1239,12 @@ fn wrap_serialize_with(
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
struct __SerializeWith #wrapper_impl_generics #where_clause {
|
struct __SerializeWith #wrapper_impl_generics #where_clause {
|
||||||
values: (#(&'__a #field_tys, )*),
|
values: (#(&'__a #field_tys, )*),
|
||||||
phantom: _serde::__private::PhantomData<#this_type #ty_generics>,
|
phantom: _serde::#private::PhantomData<#this_type #ty_generics>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[automatically_derived]
|
#[automatically_derived]
|
||||||
impl #wrapper_impl_generics _serde::Serialize for __SerializeWith #wrapper_ty_generics #where_clause {
|
impl #wrapper_impl_generics _serde::Serialize for __SerializeWith #wrapper_ty_generics #where_clause {
|
||||||
fn serialize<__S>(&#self_var, #serializer_var: __S) -> _serde::__private::Result<__S::Ok, __S::Error>
|
fn serialize<__S>(&#self_var, #serializer_var: __S) -> _serde::#private::Result<__S::Ok, __S::Error>
|
||||||
where
|
where
|
||||||
__S: _serde::Serializer,
|
__S: _serde::Serializer,
|
||||||
{
|
{
|
||||||
@@ -1254,7 +1254,7 @@ fn wrap_serialize_with(
|
|||||||
|
|
||||||
__SerializeWith {
|
__SerializeWith {
|
||||||
values: (#(#field_exprs, )*),
|
values: (#(#field_exprs, )*),
|
||||||
phantom: _serde::__private::PhantomData::<#this_type #ty_generics>,
|
phantom: _serde::#private::PhantomData::<#this_type #ty_generics>,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -1290,11 +1290,11 @@ fn get_member(params: &Parameters, field: &Field, member: &Member) -> TokenStrea
|
|||||||
quote!(&#self_var.#member)
|
quote!(&#self_var.#member)
|
||||||
};
|
};
|
||||||
let ty = field.ty;
|
let ty = field.ty;
|
||||||
quote!(_serde::__private::ser::constrain::<#ty>(#inner))
|
quote!(_serde::#private::ser::constrain::<#ty>(#inner))
|
||||||
}
|
}
|
||||||
(true, Some(getter)) => {
|
(true, Some(getter)) => {
|
||||||
let ty = field.ty;
|
let ty = field.ty;
|
||||||
quote!(_serde::__private::ser::constrain::<#ty>(&#getter(#self_var)))
|
quote!(_serde::#private::ser::constrain::<#ty>(&#getter(#self_var)))
|
||||||
}
|
}
|
||||||
(false, Some(_)) => {
|
(false, Some(_)) => {
|
||||||
unreachable!("getter is only allowed for remote impls");
|
unreachable!("getter is only allowed for remote impls");
|
||||||
|
|||||||
Reference in New Issue
Block a user