Migrate all deserialization business to rustical_xml

This commit is contained in:
Lennart
2024-12-25 10:21:36 +01:00
parent 5e2717e130
commit 80472289dc
15 changed files with 99 additions and 121 deletions

View File

@@ -2,20 +2,15 @@ pub mod multistatus;
mod propfind;
mod resourcetype;
pub mod tag_list;
pub mod tag_name;
pub use propfind::{PropElement, PropfindElement, PropfindType, Propname};
use derive_more::derive::From;
pub use multistatus::MultistatusElement;
pub use tag_list::TagList;
pub use tag_name::TagName;
pub use propfind::{PropElement, PropfindElement, PropfindType, Propname};
pub use resourcetype::Resourcetype;
use rustical_xml::XmlDeserialize;
use serde::Serialize;
pub use tag_list::TagList;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, From, PartialEq)]
#[derive(XmlDeserialize, Debug, Clone, Serialize, From, PartialEq)]
pub struct HrefElement {
pub href: String,
}

View File

@@ -1,44 +0,0 @@
use serde::{
de::{VariantAccess, Visitor},
Deserialize,
};
#[derive(Debug, Clone, PartialEq)]
pub struct TagName(pub String);
impl From<TagName> for String {
fn from(value: TagName) -> Self {
value.0
}
}
impl From<String> for TagName {
fn from(value: String) -> Self {
Self(value)
}
}
impl<'de> Deserialize<'de> for TagName {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
struct __Visitor;
impl<'de> Visitor<'de> for __Visitor {
type Value = TagName;
fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
formatter.write_str("tagname")
}
fn visit_enum<A>(self, data: A) -> Result<Self::Value, A::Error>
where
A: serde::de::EnumAccess<'de>,
{
let (name, variant): (String, _) = data.variant()?;
VariantAccess::unit_variant(variant)?;
Ok(TagName(name))
}
}
deserializer.deserialize_enum("doesn't matter", &[], __Visitor)
}
}