use super::tokens::{ToInitiator, ToResponder};
mod sealed {
pub trait Sealed {}
}
pub trait Role: sealed::Sealed {
type SendDir;
type RecvDir;
const IS_INITIATOR: bool;
}
#[derive(Debug, Clone, Copy, Default)]
pub struct Initiator;
impl sealed::Sealed for Initiator {}
impl Role for Initiator {
type SendDir = ToResponder;
type RecvDir = ToInitiator;
const IS_INITIATOR: bool = true;
}
#[derive(Debug, Clone, Copy, Default)]
pub struct Responder;
impl sealed::Sealed for Responder {}
impl Role for Responder {
type SendDir = ToInitiator;
type RecvDir = ToResponder;
const IS_INITIATOR: bool = false;
}