pub mod a;
pub mod a_dual;
pub mod a_to_all;
pub mod all_to_a;
pub mod all_to_b;
pub mod all_to_c;
pub mod b;
pub mod b_dual;
pub mod b_to_all;
pub mod broadcast;
pub mod c;
pub mod c_dual;
pub mod c_to_all;
pub mod end;
use std::marker;
pub trait Role: marker::Sized + marker::Send {
type Dual: Role<Dual = Self>;
#[doc(hidden)]
fn new() -> (Self, Self::Dual);
#[doc(hidden)]
fn head_str() -> String;
#[doc(hidden)]
fn tail_str() -> String;
#[doc(hidden)]
fn self_head_str(&self) -> String;
#[doc(hidden)]
fn self_tail_str(&self) -> String;
}