From 77f462ea2044ef7d2d12fd1289ea75a6a33cb5dd Mon Sep 17 00:00:00 2001 From: Zeyla Hellyer Date: Sat, 9 Dec 2017 09:38:05 -0800 Subject: Fix snowflake deserializer Fixes snowflake deserializers (ChannelId, UserId, etc.) by switching from a usage of `deserialize_u64` to `deserialize_any`. Our usage of `deserialize_u64` was incorrect and the erroneous behaviour was fixed in serde_json v1.0.8. We were essentially telling serde that the received type was a u64, when in fact it can be multiple types (strings, u64, or an i64 just in case). This resulted in errors like: ``` Client error: Json(ErrorImpl { code: Message("invalid type: string \"317727377985634305\", expected identifier"), line: 1, column: 100 }) ``` Due to this, simple operations such as even connecting a client failed. --- src/model/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/model/mod.rs b/src/model/mod.rs index 0817094..bcd0829 100644 --- a/src/model/mod.rs +++ b/src/model/mod.rs @@ -67,7 +67,7 @@ macro_rules! id_u64 { self } } - + impl From for $name { fn from(id_as_u64: u64) -> $name { $name(id_as_u64) @@ -94,7 +94,7 @@ macro_rules! id_u64 { impl<'de> Deserialize<'de> for $name { fn deserialize>(deserializer: D) -> StdResult { - deserializer.deserialize_u64(U64Visitor).map($name) + deserializer.deserialize_any(U64Visitor).map($name) } } )* -- cgit v1.2.3