Fixed status::StatusDescription

This commit is contained in:
Kyler 2024-06-15 14:56:43 -06:00
parent 84218292e7
commit 5ed241d868
1 changed files with 50 additions and 36 deletions

View File

@ -2,7 +2,7 @@
pub mod clientbound { pub mod clientbound {
use serde::{Serialize, Deserialize, Deserializer}; use serde::{Serialize, Deserialize, Serializer, Deserializer};
use serde::de::{self, Visitor, MapAccess}; use serde::de::{self, Visitor, MapAccess};
use std::fmt; use std::fmt;
@ -14,12 +14,24 @@ pub mod clientbound {
pub protocol: i32, pub protocol: i32,
} }
#[derive(Serialize)]
pub enum StatusDescription { pub enum StatusDescription {
String(String), String(String),
Chat(mc_types::Chat), Chat(mc_types::Chat),
} }
impl Serialize for StatusDescription {
fn serialize<S>(&self, serializer: S)
-> std::result::Result<S::Ok, S::Error>
where
S: Serializer,
{
match *self {
StatusDescription::String(ref s) => serializer.serialize_str(s),
StatusDescription::Chat(ref c) => c.serialize(serializer),
}
}
}
impl<'de> Deserialize<'de> for StatusDescription { impl<'de> Deserialize<'de> for StatusDescription {
fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error> fn deserialize<D>(deserializer: D) -> std::result::Result<Self, D::Error>
where where
@ -30,7 +42,9 @@ pub mod clientbound {
impl<'de> Visitor<'de> for StatusDescriptionVisitor { impl<'de> Visitor<'de> for StatusDescriptionVisitor {
type Value = StatusDescription; type Value = StatusDescription;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { fn expecting(&self, formatter: &mut fmt::Formatter)
-> fmt::Result
{
formatter.write_str( formatter.write_str(
"a string or a map representing a Chat object") "a string or a map representing a Chat object")
} }