resourcetype: Use tuple struct

This commit is contained in:
Lennart
2025-01-05 16:44:31 +01:00
parent 82f52cc0ab
commit 2eb6b1934d
8 changed files with 67 additions and 84 deletions

View File

@@ -99,8 +99,7 @@ impl Resource for CalendarResource {
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
if self.0.subscription_url.is_none() { if self.0.subscription_url.is_none() {
Resourcetype { Resourcetype(&[
inner: &[
ResourcetypeInner { ResourcetypeInner {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "collection", name: "collection",
@@ -109,11 +108,9 @@ impl Resource for CalendarResource {
ns: rustical_dav::namespace::NS_CALDAV, ns: rustical_dav::namespace::NS_CALDAV,
name: "calendar", name: "calendar",
}, },
], ])
}
} else { } else {
Resourcetype { Resourcetype(&[
inner: &[
ResourcetypeInner { ResourcetypeInner {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "collection", name: "collection",
@@ -122,8 +119,7 @@ impl Resource for CalendarResource {
ns: rustical_dav::namespace::NS_CALENDARSERVER, ns: rustical_dav::namespace::NS_CALENDARSERVER,
name: "subscribed", name: "subscribed",
}, },
], ])
}
} }
} }

View File

@@ -55,7 +55,7 @@ impl Resource for CalendarObjectResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { inner: &[] } Resourcetype(&[])
} }
fn get_prop( fn get_prop(

View File

@@ -58,8 +58,7 @@ impl Resource for PrincipalResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[
inner: &[
ResourcetypeInner { ResourcetypeInner {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "collection", name: "collection",
@@ -68,8 +67,7 @@ impl Resource for PrincipalResource {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "principal", name: "principal",
}, },
], ])
}
} }
fn get_prop( fn get_prop(

View File

@@ -56,7 +56,7 @@ impl Resource for AddressObjectResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { inner: &[] } Resourcetype(&[])
} }
fn get_prop( fn get_prop(

View File

@@ -71,8 +71,7 @@ impl Resource for AddressbookResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[
inner: &[
ResourcetypeInner { ResourcetypeInner {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "collection", name: "collection",
@@ -81,8 +80,7 @@ impl Resource for AddressbookResource {
ns: rustical_dav::namespace::NS_CARDDAV, ns: rustical_dav::namespace::NS_CARDDAV,
name: "addressbook", name: "addressbook",
}, },
], ])
}
} }
fn get_prop( fn get_prop(

View File

@@ -59,8 +59,7 @@ impl Resource for PrincipalResource {
type PrincipalResource = PrincipalResource; type PrincipalResource = PrincipalResource;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[
inner: &[
ResourcetypeInner { ResourcetypeInner {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "collection", name: "collection",
@@ -69,8 +68,7 @@ impl Resource for PrincipalResource {
ns: rustical_dav::namespace::NS_DAV, ns: rustical_dav::namespace::NS_DAV,
name: "principal", name: "principal",
}, },
], ])
}
} }
fn get_prop( fn get_prop(

View File

@@ -39,12 +39,10 @@ impl<PR: Resource> Resource for RootResource<PR> {
type PrincipalResource = PR; type PrincipalResource = PR;
fn get_resourcetype(&self) -> Resourcetype { fn get_resourcetype(&self) -> Resourcetype {
Resourcetype { Resourcetype(&[ResourcetypeInner {
inner: &[ResourcetypeInner {
ns: crate::namespace::NS_DAV, ns: crate::namespace::NS_DAV,
name: "collection", name: "collection",
}], }])
}
} }
fn get_prop( fn get_prop(

View File

@@ -1,10 +1,7 @@
use rustical_xml::XmlSerialize; use rustical_xml::XmlSerialize;
#[derive(Debug, Clone, PartialEq, XmlSerialize)] #[derive(Debug, Clone, PartialEq, XmlSerialize)]
pub struct Resourcetype { pub struct Resourcetype(#[xml(flatten, ty = "untagged")] pub &'static [ResourcetypeInner]);
#[xml(flatten, ty = "untagged")]
pub inner: &'static [ResourcetypeInner],
}
#[derive(Debug, Clone, PartialEq, XmlSerialize)] #[derive(Debug, Clone, PartialEq, XmlSerialize)]
pub struct ResourcetypeInner { pub struct ResourcetypeInner {
@@ -31,8 +28,7 @@ mod tests {
let mut buf = Vec::new(); let mut buf = Vec::new();
let mut writer = quick_xml::Writer::new(&mut buf); let mut writer = quick_xml::Writer::new(&mut buf);
Document { Document {
resourcetype: Resourcetype { resourcetype: Resourcetype(&[
inner: &[
ResourcetypeInner { ResourcetypeInner {
ns: crate::namespace::NS_DAV, ns: crate::namespace::NS_DAV,
name: "displayname", name: "displayname",
@@ -41,8 +37,7 @@ mod tests {
ns: crate::namespace::NS_CALENDARSERVER, ns: crate::namespace::NS_CALENDARSERVER,
name: "calendar-color", name: "calendar-color",
}, },
], ]),
},
} }
.serialize_root(&mut writer) .serialize_root(&mut writer)
.unwrap(); .unwrap();