From 0b9da1aa7a9bbbdbc5495a172cadd92ee49d7b1f Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Mon, 7 Mar 2022 11:12:44 +0100 Subject: [PATCH] cleanup(serde_v8): SerializablePkg verbosity (#13855) --- serde_v8/src/serializable.rs | 54 +++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/serde_v8/src/serializable.rs b/serde_v8/src/serializable.rs index 7b19ac13cc..298fe8c8a4 100644 --- a/serde_v8/src/serializable.rs +++ b/serde_v8/src/serializable.rs @@ -61,55 +61,59 @@ pub enum Primitive { } impl serde::Serialize for Primitive { - fn serialize(&self, serializer: S) -> Result + fn serialize(&self, s: S) -> Result where S: serde::Serializer, { match *self { - Self::Unit => serializer.serialize_unit(), - Self::Bool(x) => serializer.serialize_bool(x), - Self::Int8(x) => serializer.serialize_i8(x), - Self::Int16(x) => serializer.serialize_i16(x), - Self::Int32(x) => serializer.serialize_i32(x), - Self::Int64(x) => serializer.serialize_i64(x), - Self::UInt8(x) => serializer.serialize_u8(x), - Self::UInt16(x) => serializer.serialize_u16(x), - Self::UInt32(x) => serializer.serialize_u32(x), - Self::UInt64(x) => serializer.serialize_u64(x), - Self::Float32(x) => serializer.serialize_f32(x), - Self::Float64(x) => serializer.serialize_f64(x), + Self::Unit => ().serialize(s), + Self::Bool(x) => x.serialize(s), + Self::Int8(x) => x.serialize(s), + Self::Int16(x) => x.serialize(s), + Self::Int32(x) => x.serialize(s), + Self::Int64(x) => x.serialize(s), + Self::UInt8(x) => x.serialize(s), + Self::UInt16(x) => x.serialize(s), + Self::UInt32(x) => x.serialize(s), + Self::UInt64(x) => x.serialize(s), + Self::Float32(x) => x.serialize(s), + Self::Float64(x) => x.serialize(s), } } } impl From for SerializablePkg { fn from(x: T) -> Self { - let tid = TypeId::of::(); + #[inline(always)] + fn tc(src: T) -> U { + unsafe { transmute_copy(&src) } + } + let tid = TypeId::of::(); if tid == TypeId::of::<()>() { Self::Primitive(Primitive::Unit) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Bool(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Bool(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Int8(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Int8(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Int16(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Int16(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Int32(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Int32(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Int64(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Int64(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::UInt8(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::UInt8(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::UInt16(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::UInt16(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::UInt32(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::UInt32(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::UInt64(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::UInt64(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Float32(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Float32(tc(x))) } else if tid == TypeId::of::() { - Self::Primitive(Primitive::Float64(unsafe { transmute_copy(&x) })) + Self::Primitive(Primitive::Float64(tc(x))) } else { Self::Serializable(Box::new(x)) }