disma 0.16.4

Discord server management has never been easier!
Documentation
use std::sync::Arc;

#[derive(Debug, Clone, PartialEq)]
pub enum Change {
    Create(ChangeEntity, ChangeEntityName),
    Delete(ChangeEntity, ChangeEntityName),
    Update(ChangeEntity, ChangeEntityName),
}

type ChangeEntityName = String;

#[derive(Debug, Clone, PartialEq)]
pub enum ChangeEntity {
    Role,
    Category,
    Channel,
}

#[derive(Debug, PartialEq)]
pub enum ChangeEvent {
    Success(Change),
    Error(Change, String),
}

#[cfg_attr(test, mock_it::mock_it)]
pub trait ChangeEventListener {
    fn handle(&self, event: ChangeEvent);
}
pub type ChangeEventListenerRef = Arc<dyn ChangeEventListener>;