mirror of
https://github.com/lennart-k/rustical.git
synced 2025-12-14 17:12:22 +00:00
Migrate all deserialization business to rustical_xml
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user