Crate activitystreams[−][src]
ActivityStreams
A set of Traits and Types that make up the Activity Streams specification
Examples
Basic
extern crate activitystreams; extern crate failure; extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; use activitystreams::{context, Object, Actor, object::Profile}; use failure::Error; #[derive(Clone, Debug, Default, Deserialize, Serialize)] #[serde(rename_all = "camelCase")] pub struct Persona { #[serde(rename = "@context")] context: serde_json::Value, #[serde(rename = "type")] kind: String, } impl Object for Persona {} impl Actor for Persona {} fn run() -> Result<(), Error> { let mut profile = Profile::default(); profile.profile.set_describes_object(Persona { context: serde_json::to_value(context())?, kind: "Persona".to_owned(), })?; profile.object_props.set_context_object(context())?; let profile_string = serde_json::to_string(&profile)?; let profile: Profile = serde_json::from_str(&profile_string)?; Ok(()) }
Advanced
#[macro_use] extern crate activitystreams_derive; extern crate activitystreams_traits; extern crate activitystreams_types; extern crate failure; extern crate serde; #[macro_use] extern crate serde_derive; extern crate serde_json; use activitystreams_traits::{Link, Object}; use activitystreams_types::{CustomLink, link::Mention}; use failure::Error; /// Using the UnitString derive macro /// /// This macro implements Serialize and Deserialize for the given type, making this type /// represent the string "SomeKind" in JSON. #[derive(Clone, Debug, Default, UnitString)] #[activitystreams(SomeKind)] pub struct MyKind; /// Using the Properties derive macro /// /// This macro generates getters and setters for the associated fields. #[derive(Clone, Debug, Default, Deserialize, Serialize, Properties)] #[serde(rename_all = "camelCase")] pub struct MyProperties { /// Derive getters and setters for @context with Link and Object traits. #[serde(rename = "@context")] #[activitystreams(ab(Object, Link))] pub context: Option<serde_json::Value>, /// Use the UnitString MyKind to enforce the type of the object by "SomeKind" pub kind: MyKind, /// Derive getters and setters for required_key with String type. /// /// In the Activity Streams spec, 'functional' means there can only be one item for this /// key. This means all fields not labeled 'functional' can also be serialized/deserialized /// as Vec<T>. #[activitystreams(concrete(String), functional)] pub required_key: serde_json::Value, } fn run() -> Result<(), Error> { let mut props = MyProperties::default(); props.set_required_key_string("Hey".to_owned())?; let my_link = CustomLink::new(Mention::default(), props); let my_link_string = serde_json::to_string(&my_link)?; let my_link: CustomLink<Mention, MyProperties> = serde_json::from_str(&my_link_string)?; Ok(()) }
Modules
activity |
Activity traits and types |
actor |
Actor traits and types |
collection |
Collection traits and types |
link |
Link traits and types |
object |
Object traits and types |
properties |
A module containing helpers for tranlsating common JSON representations to and from concrete types |
Enums
Error |
The Error type |
Traits
Activity |
An Activity is a subtype of |
ActivityExt |
The Activity Extension Trait |
Actor |
|
Collection |
A Collection is a subtype of |
CollectionExt |
The Collection Extension Trait |
CollectionPage |
Used to represent distinct subsets of items from a Collection. |
CollectionPageExt |
The Collection Page Extension Trait |
IntransitiveActivity |
Instances of |
Link |
A Link is an indirect, qualified reference to a resource identified by a URL. |
LinkExt |
The Link Extension Trait |
Object |
Describes an object of any kind. |
ObjectExt |
The Object Extension Trait |
Functions
context |
The context associated with all of the Activity Streams types defined in the crate. |
Type Definitions
Result |
An alias for Result<T, Error> |