Skip to content

Commit 4c840da

Browse files
authored
Replace a serde::Serialize derive with a simpler manual serialize (#2992)
1 parent 7cb10ad commit 4c840da

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/model/channel/mod.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ mod reaction;
1212
use std::fmt;
1313

1414
use serde::de::{Error as DeError, Unexpected};
15+
use serde::ser::SerializeMap as _;
1516

1617
pub use self::attachment::*;
1718
pub use self::channel_id::*;
@@ -497,25 +498,27 @@ pub enum ForumEmoji {
497498
Name(String),
498499
}
499500

500-
#[derive(Serialize, Deserialize)]
501+
#[derive(Deserialize)]
501502
struct RawForumEmoji {
502503
emoji_id: Option<EmojiId>,
503504
emoji_name: Option<String>,
504505
}
505506

506507
impl serde::Serialize for ForumEmoji {
507508
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
509+
let mut map = serializer.serialize_map(Some(2))?;
508510
match self {
509-
Self::Id(id) => RawForumEmoji {
510-
emoji_id: Some(*id),
511-
emoji_name: None,
511+
Self::Id(id) => {
512+
map.serialize_entry("emoji_id", id)?;
513+
map.serialize_entry("emoji_name", &None::<()>)?;
512514
},
513-
Self::Name(name) => RawForumEmoji {
514-
emoji_id: None,
515-
emoji_name: Some(name.clone()),
515+
Self::Name(name) => {
516+
map.serialize_entry("emoji_id", &None::<()>)?;
517+
map.serialize_entry("emoji_name", name)?;
516518
},
517-
}
518-
.serialize(serializer)
519+
};
520+
521+
map.end()
519522
}
520523
}
521524

0 commit comments

Comments
 (0)