aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2017-12-09 09:38:05 -0800
committerZeyla Hellyer <[email protected]>2017-12-09 09:38:05 -0800
commit77f462ea2044ef7d2d12fd1289ea75a6a33cb5dd (patch)
treefde98676821d2fbcf25b2f9270bdc9b7dad5fec9 /src
parentBump to v0.4.3 (diff)
downloadserenity-77f462ea2044ef7d2d12fd1289ea75a6a33cb5dd.tar.xz
serenity-77f462ea2044ef7d2d12fd1289ea75a6a33cb5dd.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/model/mod.rs4
1 files changed, 2 insertions, 2 deletions
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<u64> 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<D: Deserializer<'de>>(deserializer: D) -> StdResult<Self, D::Error> {
- deserializer.deserialize_u64(U64Visitor).map($name)
+ deserializer.deserialize_any(U64Visitor).map($name)
}
}
)*