diff options
| author | mat <git@matdoes.dev> | 2025-09-26 06:16:33 +0800 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2025-09-25 19:20:09 -0300 |
| commit | 730297cf561d42fd9132eb201d1aec0d3d7c7e00 (patch) | |
| tree | d26f63b8a4553cc1b07c41a5b1a06aba773e60c4 /azalea-chat/src/base_component.rs | |
| parent | 8927a0fe65f5f89b4459956f19989f27f1e0981c (diff) | |
| download | azalea-drasl-730297cf561d42fd9132eb201d1aec0d3d7c7e00.tar.xz | |
fix compile error with new serde version, and update deps
Diffstat (limited to 'azalea-chat/src/base_component.rs')
| -rw-r--r-- | azalea-chat/src/base_component.rs | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/azalea-chat/src/base_component.rs b/azalea-chat/src/base_component.rs index 27666c17..be7e9656 100644 --- a/azalea-chat/src/base_component.rs +++ b/azalea-chat/src/base_component.rs @@ -1,18 +1,38 @@ -use serde::Serialize; +use serde::{Serialize, ser::SerializeMap}; use crate::{FormattedText, style::Style}; -#[derive(Clone, Debug, PartialEq, Serialize)] +#[derive(Clone, Debug, PartialEq)] pub struct BaseComponent { - // implements mutablecomponent /// Components in the "extra" field. - #[serde(skip_serializing_if = "Vec::is_empty")] pub siblings: Vec<FormattedText>, - #[serde(flatten)] pub style: Box<Style>, } impl BaseComponent { + pub fn serialize_map<S>(&self, state: &mut S::SerializeMap) -> Result<(), S::Error> + where + S: serde::Serializer, + { + if !self.siblings.is_empty() { + state.serialize_entry("extra", &self.siblings)?; + } + self.style.serialize_map::<S>(state)?; + Ok(()) + } +} +impl Serialize for BaseComponent { + fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> + where + S: serde::Serializer, + { + let mut state = serializer.serialize_map(None)?; + self.serialize_map::<S>(&mut state)?; + state.end() + } +} + +impl BaseComponent { pub fn new() -> Self { Self { siblings: Vec::new(), |
