summaryrefslogtreecommitdiffstats
path: root/vendor/serde/src/private
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 18:31:36 +0000
commite02c5b5930c2c9ba3e5423fe12e2ef0155017297 (patch)
treefd60ebbbb5299e16e5fca8c773ddb74f764760db /vendor/serde/src/private
parentAdding debian version 1.73.0+dfsg1-1. (diff)
downloadrustc-e02c5b5930c2c9ba3e5423fe12e2ef0155017297.tar.xz
rustc-e02c5b5930c2c9ba3e5423fe12e2ef0155017297.zip
Merging upstream version 1.74.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/serde/src/private')
-rw-r--r--vendor/serde/src/private/de.rs286
-rw-r--r--vendor/serde/src/private/doc.rs4
-rw-r--r--vendor/serde/src/private/mod.rs24
-rw-r--r--vendor/serde/src/private/ser.rs207
-rw-r--r--vendor/serde/src/private/size_hint.rs29
5 files changed, 255 insertions, 295 deletions
diff --git a/vendor/serde/src/private/de.rs b/vendor/serde/src/private/de.rs
index 3c0a187ac..883e6909c 100644
--- a/vendor/serde/src/private/de.rs
+++ b/vendor/serde/src/private/de.rs
@@ -1,10 +1,13 @@
-use lib::*;
+use crate::lib::*;
-use de::value::{BorrowedBytesDeserializer, BytesDeserializer};
-use de::{Deserialize, Deserializer, Error, IntoDeserializer, Visitor};
+use crate::de::value::{BorrowedBytesDeserializer, BytesDeserializer};
+use crate::de::{
+ Deserialize, DeserializeSeed, Deserializer, EnumAccess, Error, IntoDeserializer, VariantAccess,
+ Visitor,
+};
#[cfg(any(feature = "std", feature = "alloc"))]
-use de::{DeserializeSeed, MapAccess, Unexpected};
+use crate::de::{MapAccess, Unexpected};
#[cfg(any(feature = "std", feature = "alloc"))]
pub use self::content::{
@@ -13,7 +16,7 @@ pub use self::content::{
TagOrContentField, TagOrContentFieldVisitor, TaggedContentVisitor, UntaggedUnitVisitor,
};
-pub use seed::InPlaceSeed;
+pub use crate::seed::InPlaceSeed;
/// If the missing field is of type `Option<T>` then treat is as `None`,
/// otherwise it is an error.
@@ -203,13 +206,13 @@ mod content {
// This issue is tracking making some of this stuff public:
// https://github.com/serde-rs/serde/issues/741
- use lib::*;
+ use crate::lib::*;
- use __private::size_hint;
- use actually_private;
- use de::{
- self, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected, IgnoredAny,
- MapAccess, SeqAccess, Unexpected, Visitor,
+ use crate::actually_private;
+ use crate::de::value::{MapDeserializer, SeqDeserializer};
+ use crate::de::{
+ self, size_hint, Deserialize, DeserializeSeed, Deserializer, EnumAccess, Expected,
+ IgnoredAny, MapAccess, SeqAccess, Unexpected, Visitor,
};
/// Used from generated code to buffer the contents of the Deserializer when
@@ -299,6 +302,17 @@ mod content {
}
}
+ impl<'de, E> de::IntoDeserializer<'de, E> for Content<'de>
+ where
+ E: de::Error,
+ {
+ type Deserializer = ContentDeserializer<'de, E>;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ ContentDeserializer::new(self)
+ }
+ }
+
struct ContentVisitor<'de> {
value: PhantomData<Content<'de>>,
}
@@ -476,7 +490,7 @@ mod content {
{
let mut vec =
Vec::<Content>::with_capacity(size_hint::cautious::<Content>(visitor.size_hint()));
- while let Some(e) = try!(visitor.next_element()) {
+ while let Some(e) = tri!(visitor.next_element()) {
vec.push(e);
}
Ok(Content::Seq(vec))
@@ -490,7 +504,7 @@ mod content {
Vec::<(Content, Content)>::with_capacity(
size_hint::cautious::<(Content, Content)>(visitor.size_hint()),
);
- while let Some(kv) = try!(visitor.next_entry()) {
+ while let Some(kv) = tri!(visitor.next_entry()) {
vec.push(kv);
}
Ok(Content::Map(vec))
@@ -833,14 +847,14 @@ mod content {
where
S: SeqAccess<'de>,
{
- let tag = match try!(seq.next_element()) {
+ let tag = match tri!(seq.next_element()) {
Some(tag) => tag,
None => {
return Err(de::Error::missing_field(self.tag_name));
}
};
let rest = de::value::SeqAccessDeserializer::new(seq);
- Ok((tag, try!(Content::deserialize(rest))))
+ Ok((tag, tri!(Content::deserialize(rest))))
}
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
@@ -852,16 +866,16 @@ mod content {
Content,
Content,
)>(map.size_hint()));
- while let Some(k) = try!(map.next_key_seed(TagOrContentVisitor::new(self.tag_name))) {
+ while let Some(k) = tri!(map.next_key_seed(TagOrContentVisitor::new(self.tag_name))) {
match k {
TagOrContent::Tag => {
if tag.is_some() {
return Err(de::Error::duplicate_field(self.tag_name));
}
- tag = Some(try!(map.next_value()));
+ tag = Some(tri!(map.next_value()));
}
TagOrContent::Content(k) => {
- let v = try!(map.next_value());
+ let v = tri!(map.next_value());
vec.push((k, v));
}
}
@@ -1074,9 +1088,9 @@ mod content {
E: de::Error,
{
let seq = content.into_iter().map(ContentDeserializer::new);
- let mut seq_visitor = de::value::SeqDeserializer::new(seq);
- let value = try!(visitor.visit_seq(&mut seq_visitor));
- try!(seq_visitor.end());
+ let mut seq_visitor = SeqDeserializer::new(seq);
+ let value = tri!(visitor.visit_seq(&mut seq_visitor));
+ tri!(seq_visitor.end());
Ok(value)
}
@@ -1091,9 +1105,9 @@ mod content {
let map = content
.into_iter()
.map(|(k, v)| (ContentDeserializer::new(k), ContentDeserializer::new(v)));
- let mut map_visitor = de::value::MapDeserializer::new(map);
- let value = try!(visitor.visit_map(&mut map_visitor));
- try!(map_visitor.end());
+ let mut map_visitor = MapDeserializer::new(map);
+ let value = tri!(visitor.visit_map(&mut map_visitor));
+ tri!(map_visitor.end());
Ok(value)
}
@@ -1569,7 +1583,7 @@ mod content {
{
match self.value {
Some(Content::Seq(v)) => {
- de::Deserializer::deserialize_any(SeqDeserializer::new(v), visitor)
+ de::Deserializer::deserialize_any(SeqDeserializer::new(v.into_iter()), visitor)
}
Some(other) => Err(de::Error::invalid_type(
other.unexpected(),
@@ -1592,10 +1606,10 @@ mod content {
{
match self.value {
Some(Content::Map(v)) => {
- de::Deserializer::deserialize_any(MapDeserializer::new(v), visitor)
+ de::Deserializer::deserialize_any(MapDeserializer::new(v.into_iter()), visitor)
}
Some(Content::Seq(v)) => {
- de::Deserializer::deserialize_any(SeqDeserializer::new(v), visitor)
+ de::Deserializer::deserialize_any(SeqDeserializer::new(v.into_iter()), visitor)
}
Some(other) => Err(de::Error::invalid_type(
other.unexpected(),
@@ -1609,156 +1623,6 @@ mod content {
}
}
- struct SeqDeserializer<'de, E>
- where
- E: de::Error,
- {
- iter: <Vec<Content<'de>> as IntoIterator>::IntoIter,
- err: PhantomData<E>,
- }
-
- impl<'de, E> SeqDeserializer<'de, E>
- where
- E: de::Error,
- {
- fn new(vec: Vec<Content<'de>>) -> Self {
- SeqDeserializer {
- iter: vec.into_iter(),
- err: PhantomData,
- }
- }
- }
-
- impl<'de, E> de::Deserializer<'de> for SeqDeserializer<'de, E>
- where
- E: de::Error,
- {
- type Error = E;
-
- #[inline]
- fn deserialize_any<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
- where
- V: de::Visitor<'de>,
- {
- let len = self.iter.len();
- if len == 0 {
- visitor.visit_unit()
- } else {
- let ret = try!(visitor.visit_seq(&mut self));
- let remaining = self.iter.len();
- if remaining == 0 {
- Ok(ret)
- } else {
- Err(de::Error::invalid_length(len, &"fewer elements in array"))
- }
- }
- }
-
- forward_to_deserialize_any! {
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
- bytes byte_buf option unit unit_struct newtype_struct seq tuple
- tuple_struct map struct enum identifier ignored_any
- }
- }
-
- impl<'de, E> de::SeqAccess<'de> for SeqDeserializer<'de, E>
- where
- E: de::Error,
- {
- type Error = E;
-
- fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
- where
- T: de::DeserializeSeed<'de>,
- {
- match self.iter.next() {
- Some(value) => seed.deserialize(ContentDeserializer::new(value)).map(Some),
- None => Ok(None),
- }
- }
-
- fn size_hint(&self) -> Option<usize> {
- size_hint::from_bounds(&self.iter)
- }
- }
-
- struct MapDeserializer<'de, E>
- where
- E: de::Error,
- {
- iter: <Vec<(Content<'de>, Content<'de>)> as IntoIterator>::IntoIter,
- value: Option<Content<'de>>,
- err: PhantomData<E>,
- }
-
- impl<'de, E> MapDeserializer<'de, E>
- where
- E: de::Error,
- {
- fn new(map: Vec<(Content<'de>, Content<'de>)>) -> Self {
- MapDeserializer {
- iter: map.into_iter(),
- value: None,
- err: PhantomData,
- }
- }
- }
-
- impl<'de, E> de::MapAccess<'de> for MapDeserializer<'de, E>
- where
- E: de::Error,
- {
- type Error = E;
-
- fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
- where
- T: de::DeserializeSeed<'de>,
- {
- match self.iter.next() {
- Some((key, value)) => {
- self.value = Some(value);
- seed.deserialize(ContentDeserializer::new(key)).map(Some)
- }
- None => Ok(None),
- }
- }
-
- fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, Self::Error>
- where
- T: de::DeserializeSeed<'de>,
- {
- match self.value.take() {
- Some(value) => seed.deserialize(ContentDeserializer::new(value)),
- None => Err(de::Error::custom("value is missing")),
- }
- }
-
- fn size_hint(&self) -> Option<usize> {
- size_hint::from_bounds(&self.iter)
- }
- }
-
- impl<'de, E> de::Deserializer<'de> for MapDeserializer<'de, E>
- where
- E: de::Error,
- {
- type Error = E;
-
- #[inline]
- fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
- where
- V: de::Visitor<'de>,
- {
- visitor.visit_map(self)
- }
-
- forward_to_deserialize_any! {
- bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
- bytes byte_buf option unit unit_struct newtype_struct seq tuple
- tuple_struct map struct enum identifier ignored_any
- }
- }
-
/// Not public API.
pub struct ContentRefDeserializer<'a, 'de: 'a, E> {
content: &'a Content<'de>,
@@ -1820,9 +1684,9 @@ mod content {
E: de::Error,
{
let seq = content.iter().map(ContentRefDeserializer::new);
- let mut seq_visitor = de::value::SeqDeserializer::new(seq);
- let value = try!(visitor.visit_seq(&mut seq_visitor));
- try!(seq_visitor.end());
+ let mut seq_visitor = SeqDeserializer::new(seq);
+ let value = tri!(visitor.visit_seq(&mut seq_visitor));
+ tri!(seq_visitor.end());
Ok(value)
}
@@ -1840,9 +1704,9 @@ mod content {
ContentRefDeserializer::new(v),
)
});
- let mut map_visitor = de::value::MapDeserializer::new(map);
- let value = try!(visitor.visit_map(&mut map_visitor));
- try!(map_visitor.end());
+ let mut map_visitor = MapDeserializer::new(map);
+ let value = tri!(visitor.visit_map(&mut map_visitor));
+ tri!(map_visitor.end());
Ok(value)
}
@@ -2362,7 +2226,7 @@ mod content {
if len == 0 {
visitor.visit_unit()
} else {
- let ret = try!(visitor.visit_seq(&mut self));
+ let ret = tri!(visitor.visit_seq(&mut self));
let remaining = self.iter.len();
if remaining == 0 {
Ok(ret)
@@ -2541,7 +2405,7 @@ mod content {
where
M: MapAccess<'de>,
{
- while try!(access.next_entry::<IgnoredAny, IgnoredAny>()).is_some() {}
+ while tri!(access.next_entry::<IgnoredAny, IgnoredAny>()).is_some() {}
Ok(())
}
}
@@ -2974,3 +2838,55 @@ fn flat_map_take_entry<'de>(
None
}
}
+
+pub struct AdjacentlyTaggedEnumVariantSeed<F> {
+ pub enum_name: &'static str,
+ pub variants: &'static [&'static str],
+ pub fields_enum: PhantomData<F>,
+}
+
+pub struct AdjacentlyTaggedEnumVariantVisitor<F> {
+ enum_name: &'static str,
+ fields_enum: PhantomData<F>,
+}
+
+impl<'de, F> Visitor<'de> for AdjacentlyTaggedEnumVariantVisitor<F>
+where
+ F: Deserialize<'de>,
+{
+ type Value = F;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ write!(formatter, "variant of enum {}", self.enum_name)
+ }
+
+ fn visit_enum<A>(self, data: A) -> Result<Self::Value, A::Error>
+ where
+ A: EnumAccess<'de>,
+ {
+ let (variant, variant_access) = tri!(data.variant());
+ tri!(variant_access.unit_variant());
+ Ok(variant)
+ }
+}
+
+impl<'de, F> DeserializeSeed<'de> for AdjacentlyTaggedEnumVariantSeed<F>
+where
+ F: Deserialize<'de>,
+{
+ type Value = F;
+
+ fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
+ where
+ D: Deserializer<'de>,
+ {
+ deserializer.deserialize_enum(
+ self.enum_name,
+ self.variants,
+ AdjacentlyTaggedEnumVariantVisitor {
+ enum_name: self.enum_name,
+ fields_enum: PhantomData,
+ },
+ )
+ }
+}
diff --git a/vendor/serde/src/private/doc.rs b/vendor/serde/src/private/doc.rs
index f597af844..1b18fe6b4 100644
--- a/vendor/serde/src/private/doc.rs
+++ b/vendor/serde/src/private/doc.rs
@@ -1,8 +1,8 @@
// Used only by Serde doc tests. Not public API.
-use lib::*;
+use crate::lib::*;
-use ser;
+use crate::ser;
#[doc(hidden)]
#[derive(Debug)]
diff --git a/vendor/serde/src/private/mod.rs b/vendor/serde/src/private/mod.rs
index e89690236..177f8501b 100644
--- a/vendor/serde/src/private/mod.rs
+++ b/vendor/serde/src/private/mod.rs
@@ -3,30 +3,28 @@ pub mod de;
#[cfg(not(no_serde_derive))]
pub mod ser;
-pub mod size_hint;
-
// FIXME: #[cfg(doctest)] once https://github.com/rust-lang/rust/issues/67295 is fixed.
pub mod doc;
-pub use lib::clone::Clone;
-pub use lib::convert::{From, Into};
-pub use lib::default::Default;
-pub use lib::fmt::{self, Formatter};
-pub use lib::marker::PhantomData;
-pub use lib::option::Option::{self, None, Some};
-pub use lib::ptr;
-pub use lib::result::Result::{self, Err, Ok};
+pub use crate::lib::clone::Clone;
+pub use crate::lib::convert::{From, Into};
+pub use crate::lib::default::Default;
+pub use crate::lib::fmt::{self, Formatter};
+pub use crate::lib::marker::PhantomData;
+pub use crate::lib::option::Option::{self, None, Some};
+pub use crate::lib::ptr;
+pub use crate::lib::result::Result::{self, Err, Ok};
pub use self::string::from_utf8_lossy;
#[cfg(any(feature = "alloc", feature = "std"))]
-pub use lib::{ToString, Vec};
+pub use crate::lib::{ToString, Vec};
#[cfg(not(no_core_try_from))]
-pub use lib::convert::TryFrom;
+pub use crate::lib::convert::TryFrom;
mod string {
- use lib::*;
+ use crate::lib::*;
#[cfg(any(feature = "std", feature = "alloc"))]
pub fn from_utf8_lossy(bytes: &[u8]) -> Cow<str> {
diff --git a/vendor/serde/src/private/ser.rs b/vendor/serde/src/private/ser.rs
index 4dd45edae..50bcb251e 100644
--- a/vendor/serde/src/private/ser.rs
+++ b/vendor/serde/src/private/ser.rs
@@ -1,6 +1,6 @@
-use lib::*;
+use crate::lib::*;
-use ser::{self, Impossible, Serialize, SerializeMap, SerializeStruct, Serializer};
+use crate::ser::{self, Impossible, Serialize, SerializeMap, SerializeStruct, Serializer};
#[cfg(any(feature = "std", feature = "alloc"))]
use self::content::{
@@ -182,14 +182,14 @@ where
}
fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
- let mut map = try!(self.delegate.serialize_map(Some(1)));
- try!(map.serialize_entry(self.tag, self.variant_name));
+ let mut map = tri!(self.delegate.serialize_map(Some(1)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
map.end()
}
fn serialize_unit_struct(self, _: &'static str) -> Result<Self::Ok, Self::Error> {
- let mut map = try!(self.delegate.serialize_map(Some(1)));
- try!(map.serialize_entry(self.tag, self.variant_name));
+ let mut map = tri!(self.delegate.serialize_map(Some(1)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
map.end()
}
@@ -199,9 +199,9 @@ where
_: u32,
inner_variant: &'static str,
) -> Result<Self::Ok, Self::Error> {
- let mut map = try!(self.delegate.serialize_map(Some(2)));
- try!(map.serialize_entry(self.tag, self.variant_name));
- try!(map.serialize_entry(inner_variant, &()));
+ let mut map = tri!(self.delegate.serialize_map(Some(2)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
+ tri!(map.serialize_entry(inner_variant, &()));
map.end()
}
@@ -226,9 +226,9 @@ where
where
T: Serialize,
{
- let mut map = try!(self.delegate.serialize_map(Some(2)));
- try!(map.serialize_entry(self.tag, self.variant_name));
- try!(map.serialize_entry(inner_variant, inner_value));
+ let mut map = tri!(self.delegate.serialize_map(Some(2)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
+ tri!(map.serialize_entry(inner_variant, inner_value));
map.end()
}
@@ -269,9 +269,9 @@ where
inner_variant: &'static str,
len: usize,
) -> Result<Self::SerializeTupleVariant, Self::Error> {
- let mut map = try!(self.delegate.serialize_map(Some(2)));
- try!(map.serialize_entry(self.tag, self.variant_name));
- try!(map.serialize_key(inner_variant));
+ let mut map = tri!(self.delegate.serialize_map(Some(2)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
+ tri!(map.serialize_key(inner_variant));
Ok(SerializeTupleVariantAsMapValue::new(
map,
inner_variant,
@@ -280,8 +280,8 @@ where
}
fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
- let mut map = try!(self.delegate.serialize_map(len.map(|len| len + 1)));
- try!(map.serialize_entry(self.tag, self.variant_name));
+ let mut map = tri!(self.delegate.serialize_map(len.map(|len| len + 1)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
Ok(map)
}
@@ -290,8 +290,8 @@ where
name: &'static str,
len: usize,
) -> Result<Self::SerializeStruct, Self::Error> {
- let mut state = try!(self.delegate.serialize_struct(name, len + 1));
- try!(state.serialize_field(self.tag, self.variant_name));
+ let mut state = tri!(self.delegate.serialize_struct(name, len + 1));
+ tri!(state.serialize_field(self.tag, self.variant_name));
Ok(state)
}
@@ -316,9 +316,9 @@ where
inner_variant: &'static str,
len: usize,
) -> Result<Self::SerializeStructVariant, Self::Error> {
- let mut map = try!(self.delegate.serialize_map(Some(2)));
- try!(map.serialize_entry(self.tag, self.variant_name));
- try!(map.serialize_key(inner_variant));
+ let mut map = tri!(self.delegate.serialize_map(Some(2)));
+ tri!(map.serialize_entry(self.tag, self.variant_name));
+ tri!(map.serialize_key(inner_variant));
Ok(SerializeStructVariantAsMapValue::new(
map,
inner_variant,
@@ -337,9 +337,9 @@ where
#[cfg(any(feature = "std", feature = "alloc"))]
mod content {
- use lib::*;
+ use crate::lib::*;
- use ser::{self, Serialize, Serializer};
+ use crate::ser::{self, Serialize, Serializer};
pub struct SerializeTupleVariantAsMapValue<M> {
map: M,
@@ -368,13 +368,13 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<M::Error>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<M::Error>::new()));
self.fields.push(value);
Ok(())
}
fn end(mut self) -> Result<M::Ok, M::Error> {
- try!(self
+ tri!(self
.map
.serialize_value(&Content::TupleStruct(self.name, self.fields)));
self.map.end()
@@ -412,13 +412,13 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<M::Error>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<M::Error>::new()));
self.fields.push((key, value));
Ok(())
}
fn end(mut self) -> Result<M::Ok, M::Error> {
- try!(self
+ tri!(self
.map
.serialize_value(&Content::Struct(self.name, self.fields)));
self.map.end()
@@ -499,50 +499,50 @@ mod content {
}
Content::Seq(ref elements) => elements.serialize(serializer),
Content::Tuple(ref elements) => {
- use ser::SerializeTuple;
- let mut tuple = try!(serializer.serialize_tuple(elements.len()));
+ use crate::ser::SerializeTuple;
+ let mut tuple = tri!(serializer.serialize_tuple(elements.len()));
for e in elements {
- try!(tuple.serialize_element(e));
+ tri!(tuple.serialize_element(e));
}
tuple.end()
}
Content::TupleStruct(n, ref fields) => {
- use ser::SerializeTupleStruct;
- let mut ts = try!(serializer.serialize_tuple_struct(n, fields.len()));
+ use crate::ser::SerializeTupleStruct;
+ let mut ts = tri!(serializer.serialize_tuple_struct(n, fields.len()));
for f in fields {
- try!(ts.serialize_field(f));
+ tri!(ts.serialize_field(f));
}
ts.end()
}
Content::TupleVariant(n, i, v, ref fields) => {
- use ser::SerializeTupleVariant;
- let mut tv = try!(serializer.serialize_tuple_variant(n, i, v, fields.len()));
+ use crate::ser::SerializeTupleVariant;
+ let mut tv = tri!(serializer.serialize_tuple_variant(n, i, v, fields.len()));
for f in fields {
- try!(tv.serialize_field(f));
+ tri!(tv.serialize_field(f));
}
tv.end()
}
Content::Map(ref entries) => {
- use ser::SerializeMap;
- let mut map = try!(serializer.serialize_map(Some(entries.len())));
+ use crate::ser::SerializeMap;
+ let mut map = tri!(serializer.serialize_map(Some(entries.len())));
for (k, v) in entries {
- try!(map.serialize_entry(k, v));
+ tri!(map.serialize_entry(k, v));
}
map.end()
}
Content::Struct(n, ref fields) => {
- use ser::SerializeStruct;
- let mut s = try!(serializer.serialize_struct(n, fields.len()));
+ use crate::ser::SerializeStruct;
+ let mut s = tri!(serializer.serialize_struct(n, fields.len()));
for &(k, ref v) in fields {
- try!(s.serialize_field(k, v));
+ tri!(s.serialize_field(k, v));
}
s.end()
}
Content::StructVariant(n, i, v, ref fields) => {
- use ser::SerializeStructVariant;
- let mut sv = try!(serializer.serialize_struct_variant(n, i, v, fields.len()));
+ use crate::ser::SerializeStructVariant;
+ let mut sv = tri!(serializer.serialize_struct_variant(n, i, v, fields.len()));
for &(k, ref v) in fields {
- try!(sv.serialize_field(k, v));
+ tri!(sv.serialize_field(k, v));
}
sv.end()
}
@@ -639,7 +639,7 @@ mod content {
where
T: Serialize,
{
- Ok(Content::Some(Box::new(try!(value.serialize(self)))))
+ Ok(Content::Some(Box::new(tri!(value.serialize(self)))))
}
fn serialize_unit(self) -> Result<Content, E> {
@@ -669,7 +669,7 @@ mod content {
{
Ok(Content::NewtypeStruct(
name,
- Box::new(try!(value.serialize(self))),
+ Box::new(tri!(value.serialize(self))),
))
}
@@ -687,7 +687,7 @@ mod content {
name,
variant_index,
variant,
- Box::new(try!(value.serialize(self))),
+ Box::new(tri!(value.serialize(self))),
))
}
@@ -786,7 +786,7 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.elements.push(value);
Ok(())
}
@@ -812,7 +812,7 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.elements.push(value);
Ok(())
}
@@ -839,7 +839,7 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.fields.push(value);
Ok(())
}
@@ -868,7 +868,7 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.fields.push(value);
Ok(())
}
@@ -900,7 +900,7 @@ mod content {
where
T: Serialize,
{
- let key = try!(key.serialize(ContentSerializer::<E>::new()));
+ let key = tri!(key.serialize(ContentSerializer::<E>::new()));
self.key = Some(key);
Ok(())
}
@@ -913,7 +913,7 @@ mod content {
.key
.take()
.expect("serialize_value called before serialize_key");
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.entries.push((key, value));
Ok(())
}
@@ -927,8 +927,8 @@ mod content {
K: Serialize,
V: Serialize,
{
- let key = try!(key.serialize(ContentSerializer::<E>::new()));
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let key = tri!(key.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.entries.push((key, value));
Ok(())
}
@@ -951,7 +951,7 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.fields.push((key, value));
Ok(())
}
@@ -980,7 +980,7 @@ mod content {
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<E>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<E>::new()));
self.fields.push((key, value));
Ok(())
}
@@ -1025,7 +1025,7 @@ where
type SerializeTupleStruct = Impossible<Self::Ok, M::Error>;
type SerializeMap = FlatMapSerializeMap<'a, M>;
type SerializeStruct = FlatMapSerializeStruct<'a, M>;
- type SerializeTupleVariant = Impossible<Self::Ok, M::Error>;
+ type SerializeTupleVariant = FlatMapSerializeTupleVariantAsMapValue<'a, M>;
type SerializeStructVariant = FlatMapSerializeStructVariantAsMapValue<'a, M>;
fn serialize_bool(self, _: bool) -> Result<Self::Ok, Self::Error> {
@@ -1133,7 +1133,7 @@ where
where
T: Serialize,
{
- try!(self.0.serialize_key(variant));
+ tri!(self.0.serialize_key(variant));
self.0.serialize_value(value)
}
@@ -1157,10 +1157,11 @@ where
self,
_: &'static str,
_: u32,
- _: &'static str,
+ variant: &'static str,
_: usize,
) -> Result<Self::SerializeTupleVariant, Self::Error> {
- Err(Self::bad_type(Unsupported::Enum))
+ tri!(self.0.serialize_key(variant));
+ Ok(FlatMapSerializeTupleVariantAsMapValue::new(self.0))
}
fn serialize_map(self, _: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
@@ -1182,7 +1183,7 @@ where
inner_variant: &'static str,
_: usize,
) -> Result<Self::SerializeStructVariant, Self::Error> {
- try!(self.0.serialize_key(inner_variant));
+ tri!(self.0.serialize_key(inner_variant));
Ok(FlatMapSerializeStructVariantAsMapValue::new(
self.0,
inner_variant,
@@ -1259,6 +1260,52 @@ where
}
}
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#[cfg(any(feature = "std", feature = "alloc"))]
+pub struct FlatMapSerializeTupleVariantAsMapValue<'a, M: 'a> {
+ map: &'a mut M,
+ fields: Vec<Content>,
+}
+
+#[cfg(any(feature = "std", feature = "alloc"))]
+impl<'a, M> FlatMapSerializeTupleVariantAsMapValue<'a, M>
+where
+ M: SerializeMap + 'a,
+{
+ fn new(map: &'a mut M) -> Self {
+ FlatMapSerializeTupleVariantAsMapValue {
+ map,
+ fields: Vec::new(),
+ }
+ }
+}
+
+#[cfg(any(feature = "std", feature = "alloc"))]
+impl<'a, M> ser::SerializeTupleVariant for FlatMapSerializeTupleVariantAsMapValue<'a, M>
+where
+ M: SerializeMap + 'a,
+{
+ type Ok = ();
+ type Error = M::Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+ where
+ T: Serialize,
+ {
+ let value = tri!(value.serialize(ContentSerializer::<M::Error>::new()));
+ self.fields.push(value);
+ Ok(())
+ }
+
+ fn end(self) -> Result<(), Self::Error> {
+ tri!(self.map.serialize_value(&Content::Seq(self.fields)));
+ Ok(())
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
#[cfg(any(feature = "std", feature = "alloc"))]
pub struct FlatMapSerializeStructVariantAsMapValue<'a, M: 'a> {
map: &'a mut M,
@@ -1296,15 +1343,43 @@ where
where
T: Serialize,
{
- let value = try!(value.serialize(ContentSerializer::<M::Error>::new()));
+ let value = tri!(value.serialize(ContentSerializer::<M::Error>::new()));
self.fields.push((key, value));
Ok(())
}
fn end(self) -> Result<(), Self::Error> {
- try!(self
+ tri!(self
.map
.serialize_value(&Content::Struct(self.name, self.fields)));
Ok(())
}
}
+
+pub struct AdjacentlyTaggedEnumVariant {
+ pub enum_name: &'static str,
+ pub variant_index: u32,
+ pub variant_name: &'static str,
+}
+
+impl Serialize for AdjacentlyTaggedEnumVariant {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: Serializer,
+ {
+ serializer.serialize_unit_variant(self.enum_name, self.variant_index, self.variant_name)
+ }
+}
+
+// Error when Serialize for a non_exhaustive remote enum encounters a variant
+// that is not recognized.
+pub struct CannotSerializeVariant<T>(pub T);
+
+impl<T> Display for CannotSerializeVariant<T>
+where
+ T: Debug,
+{
+ fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ write!(formatter, "enum variant cannot be serialized: {:?}", self.0)
+ }
+}
diff --git a/vendor/serde/src/private/size_hint.rs b/vendor/serde/src/private/size_hint.rs
deleted file mode 100644
index 571af496a..000000000
--- a/vendor/serde/src/private/size_hint.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-use lib::*;
-
-pub fn from_bounds<I>(iter: &I) -> Option<usize>
-where
- I: Iterator,
-{
- helper(iter.size_hint())
-}
-
-#[cfg(any(feature = "std", feature = "alloc"))]
-pub fn cautious<Element>(hint: Option<usize>) -> usize {
- const MAX_PREALLOC_BYTES: usize = 1024 * 1024;
-
- if mem::size_of::<Element>() == 0 {
- 0
- } else {
- cmp::min(
- hint.unwrap_or(0),
- MAX_PREALLOC_BYTES / mem::size_of::<Element>(),
- )
- }
-}
-
-fn helper(bounds: (usize, Option<usize>)) -> Option<usize> {
- match bounds {
- (lower, Some(upper)) if lower == upper => Some(upper),
- _ => None,
- }
-}