summaryrefslogtreecommitdiffstats
path: root/vendor/serde/src
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:25:56 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:25:56 +0000
commit018c4950b9406055dec02ef0fb52f132e2bb1e2c (patch)
treea835ebdf2088ef88fa681f8fad45f09922c1ae9a /vendor/serde/src
parentAdding debian version 1.75.0+dfsg1-5. (diff)
downloadrustc-018c4950b9406055dec02ef0fb52f132e2bb1e2c.tar.xz
rustc-018c4950b9406055dec02ef0fb52f132e2bb1e2c.zip
Merging upstream version 1.76.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/serde/src')
-rw-r--r--vendor/serde/src/de/impls.rs251
-rw-r--r--vendor/serde/src/de/mod.rs2
-rw-r--r--vendor/serde/src/de/value.rs12
-rw-r--r--vendor/serde/src/lib.rs5
-rw-r--r--vendor/serde/src/ser/impls.rs147
5 files changed, 298 insertions, 119 deletions
diff --git a/vendor/serde/src/de/impls.rs b/vendor/serde/src/de/impls.rs
index b7e4c549d..413c997af 100644
--- a/vendor/serde/src/de/impls.rs
+++ b/vendor/serde/src/de/impls.rs
@@ -39,6 +39,7 @@ impl<'de> Deserialize<'de> for () {
}
#[cfg(feature = "unstable")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
impl<'de> Deserialize<'de> for ! {
fn deserialize<D>(_deserializer: D) -> Result<Self, D::Error>
where
@@ -596,6 +597,7 @@ impl<'a, 'de> Visitor<'de> for StringInPlaceVisitor<'a> {
}
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de> Deserialize<'de> for String {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -739,6 +741,7 @@ impl<'de> Visitor<'de> for CStringVisitor {
}
#[cfg(any(feature = "std", all(not(no_core_cstr), feature = "alloc")))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de> Deserialize<'de> for CString {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -750,10 +753,10 @@ impl<'de> Deserialize<'de> for CString {
macro_rules! forwarded_impl {
(
- $(#[doc = $doc:tt])*
+ $(#[$attr:meta])*
($($id:ident),*), $ty:ty, $func:expr
) => {
- $(#[doc = $doc])*
+ $(#[$attr])*
impl<'de $(, $id : Deserialize<'de>,)*> Deserialize<'de> for $ty {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -765,10 +768,15 @@ macro_rules! forwarded_impl {
}
}
-#[cfg(any(feature = "std", all(not(no_core_cstr), feature = "alloc")))]
-forwarded_impl!((), Box<CStr>, CString::into_boxed_c_str);
+forwarded_impl! {
+ #[cfg(any(feature = "std", all(not(no_core_cstr), feature = "alloc")))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ (), Box<CStr>, CString::into_boxed_c_str
+}
-forwarded_impl!((T), Reverse<T>, Reverse);
+forwarded_impl! {
+ (T), Reverse<T>, Reverse
+}
////////////////////////////////////////////////////////////////////////////////
@@ -874,9 +882,9 @@ impl<'de, T: ?Sized> Deserialize<'de> for PhantomData<T> {
////////////////////////////////////////////////////////////////////////////////
-#[cfg(any(feature = "std", feature = "alloc"))]
macro_rules! seq_impl {
(
+ $(#[$attr:meta])*
$ty:ident <T $(: $tbound1:ident $(+ $tbound2:ident)*)* $(, $typaram:ident : $bound1:ident $(+ $bound2:ident)*)*>,
$access:ident,
$clear:expr,
@@ -884,6 +892,7 @@ macro_rules! seq_impl {
$reserve:expr,
$insert:expr
) => {
+ $(#[$attr])*
impl<'de, T $(, $typaram)*> Deserialize<'de> for $ty<T $(, $typaram)*>
where
T: Deserialize<'de> $(+ $tbound1 $(+ $tbound2)*)*,
@@ -971,8 +980,9 @@ macro_rules! seq_impl {
#[cfg(any(feature = "std", feature = "alloc"))]
fn nop_reserve<T>(_seq: T, _n: usize) {}
-#[cfg(any(feature = "std", feature = "alloc"))]
seq_impl!(
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
BinaryHeap<T: Ord>,
seq,
BinaryHeap::clear,
@@ -981,8 +991,9 @@ seq_impl!(
BinaryHeap::push
);
-#[cfg(any(feature = "std", feature = "alloc"))]
seq_impl!(
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
BTreeSet<T: Eq + Ord>,
seq,
BTreeSet::clear,
@@ -991,8 +1002,9 @@ seq_impl!(
BTreeSet::insert
);
-#[cfg(any(feature = "std", feature = "alloc"))]
seq_impl!(
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
LinkedList<T>,
seq,
LinkedList::clear,
@@ -1001,8 +1013,9 @@ seq_impl!(
LinkedList::push_back
);
-#[cfg(feature = "std")]
seq_impl!(
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
HashSet<T: Eq + Hash, S: BuildHasher + Default>,
seq,
HashSet::clear,
@@ -1011,8 +1024,9 @@ seq_impl!(
HashSet::insert
);
-#[cfg(any(feature = "std", feature = "alloc"))]
seq_impl!(
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
VecDeque<T>,
seq,
VecDeque::clear,
@@ -1024,6 +1038,7 @@ seq_impl!(
////////////////////////////////////////////////////////////////////////////////
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, T> Deserialize<'de> for Vec<T>
where
T: Deserialize<'de>,
@@ -1369,13 +1384,14 @@ tuple_impls! {
////////////////////////////////////////////////////////////////////////////////
-#[cfg(any(feature = "std", feature = "alloc"))]
macro_rules! map_impl {
(
+ $(#[$attr:meta])*
$ty:ident <K $(: $kbound1:ident $(+ $kbound2:ident)*)*, V $(, $typaram:ident : $bound1:ident $(+ $bound2:ident)*)*>,
$access:ident,
- $with_capacity:expr
+ $with_capacity:expr,
) => {
+ $(#[$attr])*
impl<'de, K, V $(, $typaram)*> Deserialize<'de> for $ty<K, V $(, $typaram)*>
where
K: Deserialize<'de> $(+ $kbound1 $(+ $kbound2)*)*,
@@ -1424,21 +1440,30 @@ macro_rules! map_impl {
}
}
-#[cfg(any(feature = "std", feature = "alloc"))]
-map_impl!(BTreeMap<K: Ord, V>, map, BTreeMap::new());
+map_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ BTreeMap<K: Ord, V>,
+ map,
+ BTreeMap::new(),
+}
-#[cfg(feature = "std")]
-map_impl!(
+map_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
HashMap<K: Eq + Hash, V, S: BuildHasher + Default>,
map,
- HashMap::with_capacity_and_hasher(size_hint::cautious::<(K, V)>(map.size_hint()), S::default())
-);
+ HashMap::with_capacity_and_hasher(size_hint::cautious::<(K, V)>(map.size_hint()), S::default()),
+}
////////////////////////////////////////////////////////////////////////////////
-#[cfg(feature = "std")]
macro_rules! parse_ip_impl {
- ($expecting:tt $ty:ty; $size:tt) => {
+ (
+ $(#[$attr:meta])*
+ $ty:ty, $expecting:expr, $size:tt
+ ) => {
+ $(#[$attr])*
impl<'de> Deserialize<'de> for $ty {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1567,6 +1592,7 @@ macro_rules! deserialize_enum {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de> Deserialize<'de> for net::IpAddr {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1585,15 +1611,25 @@ impl<'de> Deserialize<'de> for net::IpAddr {
}
}
-#[cfg(feature = "std")]
-parse_ip_impl!("IPv4 address" net::Ipv4Addr; 4);
+parse_ip_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ net::Ipv4Addr, "IPv4 address", 4
+}
-#[cfg(feature = "std")]
-parse_ip_impl!("IPv6 address" net::Ipv6Addr; 16);
+parse_ip_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ net::Ipv6Addr, "IPv6 address", 16
+}
-#[cfg(feature = "std")]
macro_rules! parse_socket_impl {
- ($expecting:tt $ty:ty, $new:expr) => {
+ (
+ $(#[$attr:meta])*
+ $ty:ty, $expecting:tt,
+ $new:expr,
+ ) => {
+ $(#[$attr])*
impl<'de> Deserialize<'de> for $ty {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1610,6 +1646,7 @@ macro_rules! parse_socket_impl {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de> Deserialize<'de> for net::SocketAddr {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1628,11 +1665,19 @@ impl<'de> Deserialize<'de> for net::SocketAddr {
}
}
-#[cfg(feature = "std")]
-parse_socket_impl!("IPv4 socket address" net::SocketAddrV4, |(ip, port)| net::SocketAddrV4::new(ip, port));
+parse_socket_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ net::SocketAddrV4, "IPv4 socket address",
+ |(ip, port)| net::SocketAddrV4::new(ip, port),
+}
-#[cfg(feature = "std")]
-parse_socket_impl!("IPv6 socket address" net::SocketAddrV6, |(ip, port)| net::SocketAddrV6::new(ip, port, 0, 0));
+parse_socket_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ net::SocketAddrV6, "IPv6 socket address",
+ |(ip, port)| net::SocketAddrV6::new(ip, port, 0, 0),
+}
////////////////////////////////////////////////////////////////////////////////
@@ -1665,6 +1710,7 @@ impl<'a> Visitor<'a> for PathVisitor {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de: 'a, 'a> Deserialize<'de> for &'a Path {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1719,6 +1765,7 @@ impl<'de> Visitor<'de> for PathBufVisitor {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de> Deserialize<'de> for PathBuf {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1728,8 +1775,11 @@ impl<'de> Deserialize<'de> for PathBuf {
}
}
-#[cfg(feature = "std")]
-forwarded_impl!((), Box<Path>, PathBuf::into_boxed_path);
+forwarded_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ (), Box<Path>, PathBuf::into_boxed_path
+}
////////////////////////////////////////////////////////////////////////////////
@@ -1789,6 +1839,7 @@ impl<'de> Visitor<'de> for OsStringVisitor {
}
#[cfg(all(feature = "std", any(unix, windows)))]
+#[cfg_attr(doc_cfg, doc(cfg(all(feature = "std", any(unix, windows)))))]
impl<'de> Deserialize<'de> for OsString {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -1800,19 +1851,32 @@ impl<'de> Deserialize<'de> for OsString {
////////////////////////////////////////////////////////////////////////////////
-#[cfg(any(feature = "std", feature = "alloc"))]
-forwarded_impl!((T), Box<T>, Box::new);
+forwarded_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ (T), Box<T>, Box::new
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-forwarded_impl!((T), Box<[T]>, Vec::into_boxed_slice);
+forwarded_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ (T), Box<[T]>, Vec::into_boxed_slice
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-forwarded_impl!((), Box<str>, String::into_boxed_str);
+forwarded_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ (), Box<str>, String::into_boxed_str
+}
-#[cfg(all(feature = "std", any(unix, windows)))]
-forwarded_impl!((), Box<OsStr>, OsString::into_boxed_os_str);
+forwarded_impl! {
+ #[cfg(all(feature = "std", any(unix, windows)))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "std", any(unix, windows)))))]
+ (), Box<OsStr>, OsString::into_boxed_os_str
+}
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, 'a, T: ?Sized> Deserialize<'de> for Cow<'a, T>
where
T: ToOwned,
@@ -1834,6 +1898,10 @@ where
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+#[cfg_attr(
+ doc_cfg,
+ doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc"))))
+)]
impl<'de, T: ?Sized> Deserialize<'de> for RcWeak<T>
where
T: Deserialize<'de>,
@@ -1852,6 +1920,10 @@ where
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+#[cfg_attr(
+ doc_cfg,
+ doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc"))))
+)]
impl<'de, T: ?Sized> Deserialize<'de> for ArcWeak<T>
where
T: Deserialize<'de>,
@@ -1867,13 +1939,12 @@ where
////////////////////////////////////////////////////////////////////////////////
-#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
macro_rules! box_forwarded_impl {
(
- $(#[doc = $doc:tt])*
+ $(#[$attr:meta])*
$t:ident
) => {
- $(#[doc = $doc])*
+ $(#[$attr])*
impl<'de, T: ?Sized> Deserialize<'de> for $t<T>
where
Box<T>: Deserialize<'de>,
@@ -1888,7 +1959,6 @@ macro_rules! box_forwarded_impl {
};
}
-#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
box_forwarded_impl! {
/// This impl requires the [`"rc"`] Cargo feature of Serde.
///
@@ -1897,10 +1967,11 @@ box_forwarded_impl! {
/// will end up with a strong count of 1.
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
+ #[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))))]
Rc
}
-#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
box_forwarded_impl! {
/// This impl requires the [`"rc"`] Cargo feature of Serde.
///
@@ -1909,6 +1980,8 @@ box_forwarded_impl! {
/// will end up with a strong count of 1.
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
+ #[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))))]
Arc
}
@@ -1926,13 +1999,21 @@ where
}
}
-forwarded_impl!((T), RefCell<T>, RefCell::new);
+forwarded_impl! {
+ (T), RefCell<T>, RefCell::new
+}
-#[cfg(feature = "std")]
-forwarded_impl!((T), Mutex<T>, Mutex::new);
+forwarded_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ (T), Mutex<T>, Mutex::new
+}
-#[cfg(feature = "std")]
-forwarded_impl!((T), RwLock<T>, RwLock::new);
+forwarded_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ (T), RwLock<T>, RwLock::new
+}
////////////////////////////////////////////////////////////////////////////////
@@ -2085,6 +2166,7 @@ impl<'de> Deserialize<'de> for Duration {
////////////////////////////////////////////////////////////////////////////////
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de> Deserialize<'de> for SystemTime {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
@@ -2444,14 +2526,14 @@ mod range_from {
use crate::de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor};
- pub const FIELDS: &[&str] = &["end"];
+ pub const FIELDS: &[&str] = &["start"];
// If this were outside of the serde crate, it would just use:
//
// #[derive(Deserialize)]
// #[serde(field_identifier, rename_all = "lowercase")]
enum Field {
- End,
+ Start,
}
impl<'de> Deserialize<'de> for Field {
@@ -2465,7 +2547,7 @@ mod range_from {
type Value = Field;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- formatter.write_str("`end`")
+ formatter.write_str("`start`")
}
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
@@ -2473,7 +2555,7 @@ mod range_from {
E: Error,
{
match value {
- "end" => Ok(Field::End),
+ "start" => Ok(Field::Start),
_ => Err(Error::unknown_field(value, FIELDS)),
}
}
@@ -2483,7 +2565,7 @@ mod range_from {
E: Error,
{
match value {
- b"end" => Ok(Field::End),
+ b"start" => Ok(Field::Start),
_ => {
let value = crate::__private::from_utf8_lossy(value);
Err(Error::unknown_field(&*value, FIELDS))
@@ -2515,35 +2597,35 @@ mod range_from {
where
A: SeqAccess<'de>,
{
- let end: Idx = match tri!(seq.next_element()) {
+ let start: Idx = match tri!(seq.next_element()) {
Some(value) => value,
None => {
return Err(Error::invalid_length(0, &self));
}
};
- Ok(end)
+ Ok(start)
}
fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
where
A: MapAccess<'de>,
{
- let mut end: Option<Idx> = None;
+ let mut start: Option<Idx> = None;
while let Some(key) = tri!(map.next_key()) {
match key {
- Field::End => {
- if end.is_some() {
- return Err(<A::Error as Error>::duplicate_field("end"));
+ Field::Start => {
+ if start.is_some() {
+ return Err(<A::Error as Error>::duplicate_field("start"));
}
- end = Some(tri!(map.next_value()));
+ start = Some(tri!(map.next_value()));
}
}
}
- let end = match end {
- Some(end) => end,
- None => return Err(<A::Error as Error>::missing_field("end")),
+ let start = match start {
+ Some(start) => start,
+ None => return Err(<A::Error as Error>::missing_field("start")),
};
- Ok(end)
+ Ok(start)
}
}
}
@@ -2555,7 +2637,7 @@ mod range_from {
// #[derive(Deserialize)]
// #[serde(deny_unknown_fields)]
// struct RangeTo<Idx> {
-// start: Idx,
+// end: Idx,
// }
impl<'de, Idx> Deserialize<'de> for RangeTo<Idx>
where
@@ -2582,14 +2664,14 @@ mod range_to {
use crate::de::{Deserialize, Deserializer, Error, MapAccess, SeqAccess, Visitor};
- pub const FIELDS: &[&str] = &["start"];
+ pub const FIELDS: &[&str] = &["end"];
// If this were outside of the serde crate, it would just use:
//
// #[derive(Deserialize)]
// #[serde(field_identifier, rename_all = "lowercase")]
enum Field {
- Start,
+ End,
}
impl<'de> Deserialize<'de> for Field {
@@ -2603,7 +2685,7 @@ mod range_to {
type Value = Field;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- formatter.write_str("`start`")
+ formatter.write_str("`end`")
}
fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
@@ -2611,7 +2693,7 @@ mod range_to {
E: Error,
{
match value {
- "start" => Ok(Field::Start),
+ "end" => Ok(Field::End),
_ => Err(Error::unknown_field(value, FIELDS)),
}
}
@@ -2621,7 +2703,7 @@ mod range_to {
E: Error,
{
match value {
- b"start" => Ok(Field::Start),
+ b"end" => Ok(Field::End),
_ => {
let value = crate::__private::from_utf8_lossy(value);
Err(Error::unknown_field(&*value, FIELDS))
@@ -2653,35 +2735,35 @@ mod range_to {
where
A: SeqAccess<'de>,
{
- let start: Idx = match tri!(seq.next_element()) {
+ let end: Idx = match tri!(seq.next_element()) {
Some(value) => value,
None => {
return Err(Error::invalid_length(0, &self));
}
};
- Ok(start)
+ Ok(end)
}
fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
where
A: MapAccess<'de>,
{
- let mut start: Option<Idx> = None;
+ let mut end: Option<Idx> = None;
while let Some(key) = tri!(map.next_key()) {
match key {
- Field::Start => {
- if start.is_some() {
- return Err(<A::Error as Error>::duplicate_field("start"));
+ Field::End => {
+ if end.is_some() {
+ return Err(<A::Error as Error>::duplicate_field("end"));
}
- start = Some(tri!(map.next_value()));
+ end = Some(tri!(map.next_value()));
}
}
}
- let start = match start {
- Some(start) => start,
- None => return Err(<A::Error as Error>::missing_field("start")),
+ let end = match end {
+ Some(end) => end,
+ None => return Err(<A::Error as Error>::missing_field("end")),
};
- Ok(start)
+ Ok(end)
}
}
}
@@ -2920,6 +3002,7 @@ macro_rules! atomic_impl {
($($ty:ident $size:expr)*) => {
$(
#[cfg(any(no_target_has_atomic, target_has_atomic = $size))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "std", target_has_atomic = $size))))]
impl<'de> Deserialize<'de> for $ty {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
diff --git a/vendor/serde/src/de/mod.rs b/vendor/serde/src/de/mod.rs
index afbc23af6..c22ed070b 100644
--- a/vendor/serde/src/de/mod.rs
+++ b/vendor/serde/src/de/mod.rs
@@ -1525,6 +1525,7 @@ pub trait Visitor<'de>: Sized {
/// `String`.
#[inline]
#[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
where
E: Error,
@@ -1583,6 +1584,7 @@ pub trait Visitor<'de>: Sized {
/// The default implementation forwards to `visit_bytes` and then drops the
/// `Vec<u8>`.
#[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
where
E: Error,
diff --git a/vendor/serde/src/de/value.rs b/vendor/serde/src/de/value.rs
index 1234b8103..b229ebab7 100644
--- a/vendor/serde/src/de/value.rs
+++ b/vendor/serde/src/de/value.rs
@@ -112,6 +112,7 @@ impl Debug for Error {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl error::Error for Error {
fn description(&self) -> &str {
&self.err
@@ -184,12 +185,14 @@ impl<E> Debug for UnitDeserializer<E> {
/// A deserializer that cannot be instantiated.
#[cfg(feature = "unstable")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
pub struct NeverDeserializer<E> {
never: !,
marker: PhantomData<E>,
}
#[cfg(feature = "unstable")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
impl<'de, E> IntoDeserializer<'de, E> for !
where
E: de::Error,
@@ -562,6 +565,7 @@ impl<'de, E> Debug for BorrowedStrDeserializer<'de, E> {
/// A deserializer holding a `String`.
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
pub struct StringDeserializer<E> {
value: String,
marker: PhantomData<E>,
@@ -578,6 +582,7 @@ impl<E> Clone for StringDeserializer<E> {
}
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, E> IntoDeserializer<'de, E> for String
where
E: de::Error,
@@ -665,6 +670,7 @@ impl<E> Debug for StringDeserializer<E> {
/// A deserializer holding a `Cow<str>`.
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
pub struct CowStrDeserializer<'a, E> {
value: Cow<'a, str>,
marker: PhantomData<E>,
@@ -681,6 +687,7 @@ impl<'a, E> Clone for CowStrDeserializer<'a, E> {
}
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, 'a, E> IntoDeserializer<'de, E> for Cow<'a, str>
where
E: de::Error,
@@ -999,6 +1006,7 @@ where
////////////////////////////////////////////////////////////////////////////////
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where
T: IntoDeserializer<'de, E>,
@@ -1012,6 +1020,7 @@ where
}
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, T, E> IntoDeserializer<'de, E> for BTreeSet<T>
where
T: IntoDeserializer<'de, E> + Eq + Ord,
@@ -1025,6 +1034,7 @@ where
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de, T, S, E> IntoDeserializer<'de, E> for HashSet<T, S>
where
T: IntoDeserializer<'de, E> + Eq + Hash,
@@ -1411,6 +1421,7 @@ impl Expected for ExpectedInMap {
////////////////////////////////////////////////////////////////////////////////
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl<'de, K, V, E> IntoDeserializer<'de, E> for BTreeMap<K, V>
where
K: IntoDeserializer<'de, E> + Eq + Ord,
@@ -1425,6 +1436,7 @@ where
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<'de, K, V, S, E> IntoDeserializer<'de, E> for HashMap<K, V, S>
where
K: IntoDeserializer<'de, E> + Eq + Hash,
diff --git a/vendor/serde/src/lib.rs b/vendor/serde/src/lib.rs
index 8c6a4affc..b9fbefed4 100644
--- a/vendor/serde/src/lib.rs
+++ b/vendor/serde/src/lib.rs
@@ -95,9 +95,11 @@
////////////////////////////////////////////////////////////////////////////////
// Serde types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/serde/1.0.190")]
+#![doc(html_root_url = "https://docs.rs/serde/1.0.193")]
// Support using Serde without the standard library!
#![cfg_attr(not(feature = "std"), no_std)]
+// Show which crate feature enables conditionally compiled APIs in documentation.
+#![cfg_attr(doc_cfg, feature(doc_cfg))]
// Unstable functionality only if the user asks for it. For tracking and
// discussion of these features please refer to this issue:
//
@@ -324,6 +326,7 @@ extern crate serde_derive;
/// Derive macro available if serde is built with `features = ["derive"]`.
#[cfg(feature = "serde_derive")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "derive")))]
pub use serde_derive::{Deserialize, Serialize};
#[cfg(all(not(no_serde_derive), any(feature = "std", feature = "alloc")))]
diff --git a/vendor/serde/src/ser/impls.rs b/vendor/serde/src/ser/impls.rs
index 39acba315..8c70634af 100644
--- a/vendor/serde/src/ser/impls.rs
+++ b/vendor/serde/src/ser/impls.rs
@@ -48,6 +48,7 @@ impl Serialize for str {
}
#[cfg(any(feature = "std", feature = "alloc"))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl Serialize for String {
#[inline]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -70,6 +71,7 @@ impl<'a> Serialize for fmt::Arguments<'a> {
////////////////////////////////////////////////////////////////////////////////
#[cfg(any(feature = "std", not(no_core_cstr)))]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for CStr {
#[inline]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -81,6 +83,7 @@ impl Serialize for CStr {
}
#[cfg(any(feature = "std", all(not(no_core_cstr), feature = "alloc")))]
+#[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
impl Serialize for CString {
#[inline]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -179,9 +182,13 @@ where
}
}
-#[cfg(all(any(feature = "std", feature = "alloc"), not(no_relaxed_trait_bounds)))]
+#[cfg(not(no_relaxed_trait_bounds))]
macro_rules! seq_impl {
- ($ty:ident <T $(: $tbound1:ident $(+ $tbound2:ident)*)* $(, $typaram:ident : $bound:ident)*>) => {
+ (
+ $(#[$attr:meta])*
+ $ty:ident <T $(: $tbound1:ident $(+ $tbound2:ident)*)* $(, $typaram:ident : $bound:ident)*>
+ ) => {
+ $(#[$attr])*
impl<T $(, $typaram)*> Serialize for $ty<T $(, $typaram)*>
where
T: Serialize,
@@ -197,9 +204,13 @@ macro_rules! seq_impl {
}
}
-#[cfg(all(any(feature = "std", feature = "alloc"), no_relaxed_trait_bounds))]
+#[cfg(no_relaxed_trait_bounds)]
macro_rules! seq_impl {
- ($ty:ident <T $(: $tbound1:ident $(+ $tbound2:ident)*)* $(, $typaram:ident : $bound:ident)*>) => {
+ (
+ $(#[$attr:meta])*
+ $ty:ident <T $(: $tbound1:ident $(+ $tbound2:ident)*)* $(, $typaram:ident : $bound:ident)*>
+ ) => {
+ $(#[$attr])*
impl<T $(, $typaram)*> Serialize for $ty<T $(, $typaram)*>
where
T: Serialize $(+ $tbound1 $(+ $tbound2)*)*,
@@ -216,23 +227,41 @@ macro_rules! seq_impl {
}
}
-#[cfg(any(feature = "std", feature = "alloc"))]
-seq_impl!(BinaryHeap<T: Ord>);
+seq_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ BinaryHeap<T: Ord>
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-seq_impl!(BTreeSet<T: Ord>);
+seq_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ BTreeSet<T: Ord>
+}
-#[cfg(feature = "std")]
-seq_impl!(HashSet<T: Eq + Hash, H: BuildHasher>);
+seq_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ HashSet<T: Eq + Hash, H: BuildHasher>
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-seq_impl!(LinkedList<T>);
+seq_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ LinkedList<T>
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-seq_impl!(Vec<T>);
+seq_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ Vec<T>
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-seq_impl!(VecDeque<T>);
+seq_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ VecDeque<T>
+}
////////////////////////////////////////////////////////////////////////////////
@@ -339,6 +368,7 @@ impl Serialize for () {
}
#[cfg(feature = "unstable")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "unstable")))]
impl Serialize for ! {
fn serialize<S>(&self, _serializer: S) -> Result<S::Ok, S::Error>
where
@@ -394,9 +424,13 @@ tuple_impls! {
////////////////////////////////////////////////////////////////////////////////
-#[cfg(all(any(feature = "std", feature = "alloc"), not(no_relaxed_trait_bounds)))]
+#[cfg(not(no_relaxed_trait_bounds))]
macro_rules! map_impl {
- ($ty:ident <K $(: $kbound1:ident $(+ $kbound2:ident)*)*, V $(, $typaram:ident : $bound:ident)*>) => {
+ (
+ $(#[$attr:meta])*
+ $ty:ident <K $(: $kbound1:ident $(+ $kbound2:ident)*)*, V $(, $typaram:ident : $bound:ident)*>
+ ) => {
+ $(#[$attr])*
impl<K, V $(, $typaram)*> Serialize for $ty<K, V $(, $typaram)*>
where
K: Serialize,
@@ -413,9 +447,13 @@ macro_rules! map_impl {
}
}
-#[cfg(all(any(feature = "std", feature = "alloc"), no_relaxed_trait_bounds))]
+#[cfg(no_relaxed_trait_bounds)]
macro_rules! map_impl {
- ($ty:ident <K $(: $kbound1:ident $(+ $kbound2:ident)*)*, V $(, $typaram:ident : $bound:ident)*>) => {
+ (
+ $(#[$attr:meta])*
+ $ty:ident <K $(: $kbound1:ident $(+ $kbound2:ident)*)*, V $(, $typaram:ident : $bound:ident)*>
+ ) => {
+ $(#[$attr])*
impl<K, V $(, $typaram)*> Serialize for $ty<K, V $(, $typaram)*>
where
K: Serialize $(+ $kbound1 $(+ $kbound2)*)*,
@@ -433,20 +471,26 @@ macro_rules! map_impl {
}
}
-#[cfg(any(feature = "std", feature = "alloc"))]
-map_impl!(BTreeMap<K: Ord, V>);
+map_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ BTreeMap<K: Ord, V>
+}
-#[cfg(feature = "std")]
-map_impl!(HashMap<K: Eq + Hash, V, H: BuildHasher>);
+map_impl! {
+ #[cfg(feature = "std")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
+ HashMap<K: Eq + Hash, V, H: BuildHasher>
+}
////////////////////////////////////////////////////////////////////////////////
macro_rules! deref_impl {
(
- $(#[doc = $doc:tt])*
+ $(#[$attr:meta])*
<$($desc:tt)+
) => {
- $(#[doc = $doc])*
+ $(#[$attr])*
impl <$($desc)+ {
#[inline]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -459,13 +503,20 @@ macro_rules! deref_impl {
};
}
-deref_impl!(<'a, T: ?Sized> Serialize for &'a T where T: Serialize);
-deref_impl!(<'a, T: ?Sized> Serialize for &'a mut T where T: Serialize);
+deref_impl! {
+ <'a, T: ?Sized> Serialize for &'a T where T: Serialize
+}
-#[cfg(any(feature = "std", feature = "alloc"))]
-deref_impl!(<T: ?Sized> Serialize for Box<T> where T: Serialize);
+deref_impl! {
+ <'a, T: ?Sized> Serialize for &'a mut T where T: Serialize
+}
+
+deref_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ <T: ?Sized> Serialize for Box<T> where T: Serialize
+}
-#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
deref_impl! {
/// This impl requires the [`"rc"`] Cargo feature of Serde.
///
@@ -475,10 +526,11 @@ deref_impl! {
/// repeated data.
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
+ #[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))))]
<T: ?Sized> Serialize for Rc<T> where T: Serialize
}
-#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
deref_impl! {
/// This impl requires the [`"rc"`] Cargo feature of Serde.
///
@@ -488,11 +540,16 @@ deref_impl! {
/// repeated data.
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
+ #[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))))]
<T: ?Sized> Serialize for Arc<T> where T: Serialize
}
-#[cfg(any(feature = "std", feature = "alloc"))]
-deref_impl!(<'a, T: ?Sized> Serialize for Cow<'a, T> where T: Serialize + ToOwned);
+deref_impl! {
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ #[cfg_attr(doc_cfg, doc(cfg(any(feature = "std", feature = "alloc"))))]
+ <'a, T: ?Sized> Serialize for Cow<'a, T> where T: Serialize + ToOwned
+}
////////////////////////////////////////////////////////////////////////////////
@@ -500,6 +557,10 @@ deref_impl!(<'a, T: ?Sized> Serialize for Cow<'a, T> where T: Serialize + ToOwne
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+#[cfg_attr(
+ doc_cfg,
+ doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc"))))
+)]
impl<T: ?Sized> Serialize for RcWeak<T>
where
T: Serialize,
@@ -516,6 +577,10 @@ where
///
/// [`"rc"`]: https://serde.rs/feature-flags.html#-features-rc
#[cfg(all(feature = "rc", any(feature = "std", feature = "alloc")))]
+#[cfg_attr(
+ doc_cfg,
+ doc(cfg(all(feature = "rc", any(feature = "std", feature = "alloc"))))
+)]
impl<T: ?Sized> Serialize for ArcWeak<T>
where
T: Serialize,
@@ -592,6 +657,7 @@ where
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<T: ?Sized> Serialize for Mutex<T>
where
T: Serialize,
@@ -608,6 +674,7 @@ where
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<T: ?Sized> Serialize for RwLock<T>
where
T: Serialize,
@@ -661,6 +728,7 @@ impl Serialize for Duration {
////////////////////////////////////////////////////////////////////////////////
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for SystemTime {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -705,6 +773,7 @@ macro_rules! serialize_display_bounded_length {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for net::IpAddr {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -775,6 +844,7 @@ fn test_format_u8() {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for net::Ipv4Addr {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -799,6 +869,7 @@ impl Serialize for net::Ipv4Addr {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for net::Ipv6Addr {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -815,6 +886,7 @@ impl Serialize for net::Ipv6Addr {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for net::SocketAddr {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -839,6 +911,7 @@ impl Serialize for net::SocketAddr {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for net::SocketAddrV4 {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -855,6 +928,7 @@ impl Serialize for net::SocketAddrV4 {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for net::SocketAddrV6 {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -876,6 +950,7 @@ impl Serialize for net::SocketAddrV6 {
////////////////////////////////////////////////////////////////////////////////
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for Path {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -889,6 +964,7 @@ impl Serialize for Path {
}
#[cfg(feature = "std")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl Serialize for PathBuf {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -899,6 +975,7 @@ impl Serialize for PathBuf {
}
#[cfg(all(feature = "std", any(unix, windows)))]
+#[cfg_attr(doc_cfg, doc(cfg(all(feature = "std", any(unix, windows)))))]
impl Serialize for OsStr {
#[cfg(unix)]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -921,6 +998,7 @@ impl Serialize for OsStr {
}
#[cfg(all(feature = "std", any(unix, windows)))]
+#[cfg_attr(doc_cfg, doc(cfg(all(feature = "std", any(unix, windows)))))]
impl Serialize for OsString {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
@@ -965,6 +1043,7 @@ macro_rules! atomic_impl {
($($ty:ident $size:expr)*) => {
$(
#[cfg(any(no_target_has_atomic, target_has_atomic = $size))]
+ #[cfg_attr(doc_cfg, doc(cfg(all(feature = "std", target_has_atomic = $size))))]
impl Serialize for $ty {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where