schema_org_types/schemas/enumerations/
digital_document_permission_type.rs1#[cfg_attr(feature = "derive-debug", derive(Debug))]
3#[cfg_attr(feature = "derive-clone", derive(Clone))]
4pub enum DigitalDocumentPermissionType {
5 CommentPermission,
7 ReadPermission,
9 WritePermission,
11}
12#[cfg(feature = "serde")]
13mod serde {
14 use std::{fmt, fmt::Formatter};
15
16 use ::serde::{
17 de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
18 };
19
20 use super::*;
21 impl Serialize for DigitalDocumentPermissionType {
22 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
23 where
24 S: Serializer,
25 {
26 match *self {
27 DigitalDocumentPermissionType::CommentPermission => serializer
28 .serialize_unit_variant(
29 "DigitalDocumentPermissionType",
30 0u32,
31 "CommentPermission",
32 ),
33 DigitalDocumentPermissionType::ReadPermission => serializer.serialize_unit_variant(
34 "DigitalDocumentPermissionType",
35 1u32,
36 "ReadPermission",
37 ),
38 DigitalDocumentPermissionType::WritePermission => serializer
39 .serialize_unit_variant(
40 "DigitalDocumentPermissionType",
41 2u32,
42 "WritePermission",
43 ),
44 }
45 }
46 }
47 impl<'de> Deserialize<'de> for DigitalDocumentPermissionType {
48 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
49 where
50 D: Deserializer<'de>,
51 {
52 enum Field {
53 CommentPermission,
54 ReadPermission,
55 WritePermission,
56 }
57 struct FieldVisitor;
58 impl<'de> de::Visitor<'de> for FieldVisitor {
59 type Value = Field;
60 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
61 formatter.write_str("variant identifier")
62 }
63 fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
64 where
65 E: de::Error,
66 {
67 match value {
68 "CommentPermission" => Ok(Field::CommentPermission),
69 "ReadPermission" => Ok(Field::ReadPermission),
70 "WritePermission" => Ok(Field::WritePermission),
71 _ => Err(de::Error::unknown_variant(value, VARIANTS)),
72 }
73 }
74 fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
75 where
76 E: de::Error,
77 {
78 match value {
79 b"CommentPermission" => Ok(Field::CommentPermission),
80 b"ReadPermission" => Ok(Field::ReadPermission),
81 b"WritePermission" => Ok(Field::WritePermission),
82 _ => {
83 let value = &String::from_utf8_lossy(value);
84 Err(de::Error::unknown_variant(value, VARIANTS))
85 }
86 }
87 }
88 }
89 impl<'de> Deserialize<'de> for Field {
90 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
91 where
92 D: Deserializer<'de>,
93 {
94 deserializer.deserialize_identifier(FieldVisitor)
95 }
96 }
97 struct EnumerationVisitor;
98 impl<'de> Visitor<'de> for EnumerationVisitor {
99 type Value = DigitalDocumentPermissionType;
100 fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
101 formatter.write_str("schema.org schema DigitalDocumentPermissionType")
102 }
103 fn visit_enum<A>(self, data: A) -> Result<Self::Value, A::Error>
104 where
105 A: de::EnumAccess<'de>,
106 {
107 match de::EnumAccess::variant::<Field>(data)? {
108 (Field::CommentPermission, variant) => {
109 de::VariantAccess::unit_variant(variant)?;
110 Ok(DigitalDocumentPermissionType::CommentPermission)
111 }
112 (Field::ReadPermission, variant) => {
113 de::VariantAccess::unit_variant(variant)?;
114 Ok(DigitalDocumentPermissionType::ReadPermission)
115 }
116 (Field::WritePermission, variant) => {
117 de::VariantAccess::unit_variant(variant)?;
118 Ok(DigitalDocumentPermissionType::WritePermission)
119 }
120 }
121 }
122 }
123 const VARIANTS: &[&str] = &["CommentPermission", "ReadPermission", "WritePermission"];
124 deserializer.deserialize_enum(
125 "DigitalDocumentPermissionType",
126 VARIANTS,
127 EnumerationVisitor,
128 )
129 }
130 }
131}