# ActivityRust ## What is ActivityRust ? ActivityRust is a crate that allows a user to manage the structures used by common implementations of the ActivityPub protocol. In order to do so, it tries to be compilant with: * The ActivityStream Vocabulary, as defined [here](https://www.w3.org/TR/activitystreams-vocabulary/) * The ActivityPub extensions, as defined [here](https://www.w3.org/TR/activitypub/) * Parts of the W3ID Security extension, as defined [here](https://w3id.org/) * The WebFinger schema ActivityRust allows creation and edition of these structures, but can also serialize and deserialize them to json. ## How to use ActivityRust ? ### Creating an ActivityStream entity ```rust extern crate activityrust; // Import the required traits use activityrust::traits::properties::*; use activityrust::entities::actortypes::ActivityStreamPerson; use url::Url; fn main() { let mut activity = ActivityStreamPerson::create(); let activity_url = Url::parse("http://test.test").unwrap(); activity.set_id(activity_url); } ``` As ActivityStream, ActivityRust supports setting null values for properties. In practice, it means that you can do this: ```rust activity.set_summary::>(None); ``` ### Deserializing an ActivityStream entity ActivityRust supports the `serde` module, and all entities can be deserialized to their proper types and serialized to JSON.