Skip to main content

activitystreams_vocabulary/
lib.rs

1#![doc = include_str!("../README.md")]
2
3extern crate alloc;
4
5pub use heck;
6pub use paste::paste;
7pub use serde;
8pub use serde_json;
9
10pub use alloc::collections::BTreeMap as Map;
11
12pub mod activity;
13pub mod actor;
14mod content;
15mod context;
16mod duration;
17mod error;
18mod generic;
19mod iri;
20mod item;
21mod langtag;
22pub mod link;
23mod list;
24mod macros;
25mod mime;
26mod name;
27pub mod object;
28pub mod security;
29mod time;
30pub mod vocabulary;
31
32pub use activity::*;
33pub use actor::*;
34pub use content::{Content, ContentItem};
35pub use context::Context;
36pub use duration::Duration;
37pub use error::{Error, Result};
38pub use generic::GenericType;
39pub use iri::*;
40pub use item::{Item, Items, OrderedItems};
41pub use langtag::{LanguageMap, LanguageTag};
42pub use link::*;
43pub use list::OrderedList;
44pub use mime::MimeType;
45pub use name::{Name, NameMap};
46pub use object::*;
47pub use security::*;
48pub use time::DateTime;
49pub use vocabulary::*;
50
51#[cfg(test)]
52pub(crate) mod tests {
53    use super::{ActivityVocabulary, Error};
54
55    #[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, serde::Serialize)]
56    pub struct TestType<T: ActivityVocabulary>(T);
57    impl<T: ActivityVocabulary> TestType<T> {
58        pub fn as_type(&self) -> Result<T::Type, Error> {
59            self.0.as_type()
60        }
61    }
62
63    impl<'de, T: ActivityVocabulary> serde::de::Deserialize<'de> for TestType<T> {
64        fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
65        where
66            D: serde::de::Deserializer<'de>,
67        {
68            T::deserialize(deserializer).map(TestType)
69        }
70    }
71}