mirror of
https://github.com/serde-rs/serde.git
synced 2025-09-26 20:40:35 +00:00
Move Content's Clone impl from serde_core to serde
This commit is contained in:
parent
ff3aee490a
commit
cf141aa8c7
@ -225,6 +225,37 @@ mod content {
|
||||
}
|
||||
}
|
||||
|
||||
fn content_clone<'de>(content: &Content<'de>) -> Content<'de> {
|
||||
match content {
|
||||
Content::Bool(b) => Content::Bool(*b),
|
||||
Content::U8(n) => Content::U8(*n),
|
||||
Content::U16(n) => Content::U16(*n),
|
||||
Content::U32(n) => Content::U32(*n),
|
||||
Content::U64(n) => Content::U64(*n),
|
||||
Content::I8(n) => Content::I8(*n),
|
||||
Content::I16(n) => Content::I16(*n),
|
||||
Content::I32(n) => Content::I32(*n),
|
||||
Content::I64(n) => Content::I64(*n),
|
||||
Content::F32(f) => Content::F32(*f),
|
||||
Content::F64(f) => Content::F64(*f),
|
||||
Content::Char(c) => Content::Char(*c),
|
||||
Content::String(s) => Content::String(s.clone()),
|
||||
Content::Str(s) => Content::Str(*s),
|
||||
Content::ByteBuf(b) => Content::ByteBuf(b.clone()),
|
||||
Content::Bytes(b) => Content::Bytes(b),
|
||||
Content::None => Content::None,
|
||||
Content::Some(content) => Content::Some(Box::new(content_clone(content))),
|
||||
Content::Unit => Content::Unit,
|
||||
Content::Newtype(content) => Content::Newtype(Box::new(content_clone(content))),
|
||||
Content::Seq(seq) => Content::Seq(seq.iter().map(content_clone).collect()),
|
||||
Content::Map(map) => Content::Map(
|
||||
map.iter()
|
||||
.map(|(k, v)| (content_clone(k), content_clone(v)))
|
||||
.collect(),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
#[cold]
|
||||
fn content_unexpected<'a, 'de>(content: &'a Content<'de>) -> Unexpected<'a> {
|
||||
match *content {
|
||||
@ -2158,7 +2189,7 @@ mod content {
|
||||
V: Visitor<'de, Value = Content<'de>>,
|
||||
{
|
||||
let _ = visitor;
|
||||
Ok(self.content.clone())
|
||||
Ok(content_clone(self.content))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,6 @@ use crate::private::size_hint;
|
||||
// Not public API. Use serde-value instead.
|
||||
//
|
||||
// Obsoleted by format-specific buffer types (https://github.com/serde-rs/serde/pull/2912).
|
||||
#[derive(Clone)]
|
||||
#[doc(hidden)]
|
||||
pub enum Content<'de> {
|
||||
Bool(bool),
|
||||
|
Loading…
x
Reference in New Issue
Block a user