useasync_trait::async_trait;pubuseactionable_macros::Dispatcher;usecrate::Permissions;/// Dispatches `T` to an appropriate handler. This trait is derivable.
#[async_trait]pubtraitDispatcher<T> {/// The type of the result.
typeResult:Send+Sync;/// Dispatches `request` to the appropriate handler while also ensuring `permissions` allows the request.
async fndispatch(&self, permissions:&Permissions, request: T)->Self::Result;}