actrpc-core 0.1.0

Core types and traits for ActRPC.
Documentation
use crate::{
    action::ActionKind,
    descriptor::{
        Accepts,
        types::{OkDescriptor, ParamsDescriptor},
    },
};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub struct ActionDescriptor {
    pub kind: ActionKind,
    pub params: Option<ParamsDescriptor>,
    pub ok: Option<OkDescriptor>,
}

impl Accepts for ActionDescriptor {
    fn accepts(&self, actual: &Self) -> bool {
        self.kind == actual.kind
            && self.params.accepts(&actual.params)
            && self.ok.accepts(&actual.ok)
    }
}