activitystreams-traits

Crates.ioactivitystreams-traits
lib.rsactivitystreams-traits
version0.4.0-alpha.0
sourcesrc
created_at2018-05-14 06:19:52.085788
updated_at2020-03-11 13:40:53.091401
descriptionTraits for ActivityStreams 2.0 objects
homepage
repositoryhttps://git.asonix.dog/Aardwolf/activitystreams
max_upload_size
id65283
size49,897
asonix (asonix)

documentation

README

ActivityStreams Traits

Traits for Activity Streams

These traits don't provide any functionality other than anotations for types created in other projects. See the activitystreams-types crate for examples of how these traits could be used.

Examples

Add it to your Cargo.toml

activitystreams-traits = "0.4.0-alpha.0"
serde = { version = "1.0", features = ["derive"] }
typetag = "0.1.4"

Use it in your project

use activitystreams_traits::{Object, Actor};

#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Persona {
    #[serde(rename = "type")]
    kind: String,
}

// TypeTag exists so user-defined types can be deserialized generically in activitystreams-types
#[typetag::serde]
impl Object for Persona {
    fn as_any(&self) -> &(dyn Any + 'static) {
        self
    }

    fn as_any_mut(&mut self) -> &mut (dyn Any + 'static) {
        self
    }

    fn duplicate(&self) -> Box<dyn Object + 'static> {
        Box::new(self.clone())
    }
}
impl Actor for Persona {}

Contributing

Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3.

License

Copyright © 2020 Riley Trautman

ActivityStreams Traits is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

ActivityStreams Traits is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. This file is part of ActivityStreams Traits.

You should have received a copy of the GNU General Public License along with ActivityStreams Traits. If not, see http://www.gnu.org/licenses/.

Commit count: 0

cargo fmt