From 25f3444fd98cdae50086f88a2c6b7446499bd097 Mon Sep 17 00:00:00 2001 From: nickelc Date: Tue, 18 Jan 2022 17:52:10 +0100 Subject: [PATCH] Remove workaround for serde_json's `arbitrary_precision` feature (#1669) In the past `serde_json` would call `Visitor::visit_map` for all numbers when its `arbitrary_precision` feature is activated. Since `serde_json` v1.0.75 that method is only called for 128bit numbers. --- Cargo.toml | 2 +- src/model/id.rs | 37 ++----------------------------------- 2 files changed, 3 insertions(+), 36 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c3c5309f472..798e77e5ca6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ members = ["examples/*"] [dependencies] bitflags = "1.1" -serde_json = "1" +serde_json = "1.0.75" async-trait = "0.1.9" [dependencies.simd-json] diff --git a/src/model/id.rs b/src/model/id.rs index c06b23f3227..41231bf098f 100644 --- a/src/model/id.rs +++ b/src/model/id.rs @@ -254,8 +254,8 @@ pub(crate) mod snowflake { use std::convert::TryFrom; use std::fmt; - use serde::de::{Error, MapAccess, Visitor}; - use serde::{Deserialize, Deserializer, Serializer}; + use serde::de::{Error, Visitor}; + use serde::{Deserializer, Serializer}; pub fn deserialize<'de, D: Deserializer<'de>>(deserializer: D) -> Result { deserializer.deserialize_any(SnowflakeVisitor) @@ -287,39 +287,6 @@ pub(crate) mod snowflake { fn visit_str(self, value: &str) -> Result { value.parse().map_err(Error::custom) } - - // This is called when serde_json's `arbitrary_precision` feature is enabled. - fn visit_map>(self, mut map: A) -> Result { - let id = map.next_value::()?; - Ok(id.value) - } - } - - struct Snowflake { - value: u64, - } - - impl<'de> Deserialize<'de> for Snowflake { - fn deserialize>(deserializer: D) -> Result { - struct StrVisitor; - - impl<'de> Visitor<'de> for StrVisitor { - type Value = Snowflake; - - fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { - formatter.write_str("string containing a number") - } - - fn visit_str(self, s: &str) -> Result { - let value = s.parse().map_err(Error::custom)?; - Ok(Snowflake { - value, - }) - } - } - - deserializer.deserialize_str(StrVisitor) - } } }