Trait drone_core::token::Token[][src]

pub unsafe trait Token: Sized + Send + 'static {
    unsafe fn take() -> Self;
}
[]

A zero-sized affine type, at most one instance of which ever exists.

The above properties can’t be expressed with Rust type-system, therefore the trait is marked unsafe, and it is the implementer responsibility to keep the following invariants:

  1. The type must not implement Clone.
  2. The type must be instantiated only inside Token::take method.
  3. The type must be zero-sized.

Required methods

unsafe fn take() -> Self[src][]

Creates the token instance.

Safety

At most one instance of the token must ever exist. This invariant can’t be expressed with Rust type-system, therefore the method is marked unsafe, and it is the caller responsibility to keep the invariant.

It is recommended to call this method at the very beginning of the program and pass the instance further to the code.

Since the type is ZST, the method is no-op from the assembly perspective. Likewise passing the instance around doesn’t consume the stack, and storing the instance inside other types doesn’t consume the memory.

Implementors

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Cyccnt<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Cp11<_T> where
    _T: RegTag

impl<_T> Token for Cp10<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Aspen<_T> where
    _T: RegTag

impl<_T> Token for Lspen<_T> where
    _T: RegTag

impl<_T> Token for Monrdy<_T> where
    _T: RegTag

impl<_T> Token for Bfrdy<_T> where
    _T: RegTag

impl<_T> Token for Mmrdy<_T> where
    _T: RegTag

impl<_T> Token for Hfrdy<_T> where
    _T: RegTag

impl<_T> Token for Thread<_T> where
    _T: RegTag

impl<_T> Token for User<_T> where
    _T: RegTag

impl<_T> Token for Lspact<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Address<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Ahp<_T> where
    _T: RegTag

impl<_T> Token for Dn<_T> where
    _T: RegTag

impl<_T> Token for Fz<_T> where
    _T: RegTag

impl<_T> Token for Rmode<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Privmask<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Busy<_T> where
    _T: RegTag

impl<_T> Token for TraceBusID<_T> where
    _T: RegTag

impl<_T> Token for Gtsfreq<_T> where
    _T: RegTag

impl<_T> Token for Tsprescale<_T> where
    _T: RegTag

impl<_T> Token for Swoena<_T> where
    _T: RegTag

impl<_T> Token for Txena<_T> where
    _T: RegTag

impl<_T> Token for Syncena<_T> where
    _T: RegTag

impl<_T> Token for Tsena<_T> where
    _T: RegTag

impl<_T> Token for Itmena<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Unlock<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Iregion<_T> where
    _T: RegTag

impl<_T> Token for Dregion<_T> where
    _T: RegTag

impl<_T> Token for Separate<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Privdefena<_T> where
    _T: RegTag

impl<_T> Token for Hfnmiena<_T> where
    _T: RegTag

impl<_T> Token for Enable<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Region<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Addr<_T> where
    _T: RegTag

impl<_T> Token for Valid<_T> where
    _T: RegTag

impl<_T> Token for Region<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Xn<_T> where
    _T: RegTag

impl<_T> Token for Ap<_T> where
    _T: RegTag

impl<_T> Token for Tex<_T> where
    _T: RegTag

impl<_T> Token for S<_T> where
    _T: RegTag

impl<_T> Token for C<_T> where
    _T: RegTag

impl<_T> Token for B<_T> where
    _T: RegTag

impl<_T> Token for Srd<_T> where
    _T: RegTag

impl<_T> Token for Size<_T> where
    _T: RegTag

impl<_T> Token for Enable<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Implementer<_T> where
    _T: RegTag

impl<_T> Token for Variant<_T> where
    _T: RegTag

impl<_T> Token for Architecture<_T> where
    _T: RegTag

impl<_T> Token for Partno<_T> where
    _T: RegTag

impl<_T> Token for Revision<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Nmipendset<_T> where
    _T: RegTag

impl<_T> Token for Pendsvset<_T> where
    _T: RegTag

impl<_T> Token for Pendsvclr<_T> where
    _T: RegTag

impl<_T> Token for Pendstset<_T> where
    _T: RegTag

impl<_T> Token for Pendstclr<_T> where
    _T: RegTag

impl<_T> Token for Isrpending<_T> where
    _T: RegTag

impl<_T> Token for Vectpending<_T> where
    _T: RegTag

impl<_T> Token for Rettobase<_T> where
    _T: RegTag

impl<_T> Token for Vectactive<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Tbloff<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Vectkey<_T> where
    _T: RegTag

impl<_T> Token for Endianess<_T> where
    _T: RegTag

impl<_T> Token for Prigroup<_T> where
    _T: RegTag

impl<_T> Token for Sysresetreq<_T> where
    _T: RegTag

impl<_T> Token for Vectclractive<_T> where
    _T: RegTag

impl<_T> Token for Vectreset<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Seveonpend<_T> where
    _T: RegTag

impl<_T> Token for Sleepdeep<_T> where
    _T: RegTag

impl<_T> Token for Sleeponexit<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Stkalign<_T> where
    _T: RegTag

impl<_T> Token for Bfhfnmign<_T> where
    _T: RegTag

impl<_T> Token for Div0Trp<_T> where
    _T: RegTag

impl<_T> Token for UnalignTrp<_T> where
    _T: RegTag

impl<_T> Token for Usersetmpend<_T> where
    _T: RegTag

impl<_T> Token for Nonbasethrdena<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for PriUsageFault<_T> where
    _T: RegTag

impl<_T> Token for PriBusFault<_T> where
    _T: RegTag

impl<_T> Token for PriMemManage<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for PriSvCall<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for PriSysTick<_T> where
    _T: RegTag

impl<_T> Token for PriPendSv<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Usgfaultena<_T> where
    _T: RegTag

impl<_T> Token for Busfaultena<_T> where
    _T: RegTag

impl<_T> Token for Memfaultena<_T> where
    _T: RegTag

impl<_T> Token for Svcallpended<_T> where
    _T: RegTag

impl<_T> Token for Busfaultpended<_T> where
    _T: RegTag

impl<_T> Token for Memfaultpended<_T> where
    _T: RegTag

impl<_T> Token for Usgfaultpended<_T> where
    _T: RegTag

impl<_T> Token for Systickact<_T> where
    _T: RegTag

impl<_T> Token for Pendsvact<_T> where
    _T: RegTag

impl<_T> Token for Monitoract<_T> where
    _T: RegTag

impl<_T> Token for Svcallact<_T> where
    _T: RegTag

impl<_T> Token for Usgfaultact<_T> where
    _T: RegTag

impl<_T> Token for Busfaultact<_T> where
    _T: RegTag

impl<_T> Token for Memfaultact<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Mmarvalid<_T> where
    _T: RegTag

impl<_T> Token for Mlsperr<_T> where
    _T: RegTag

impl<_T> Token for Mstkerr<_T> where
    _T: RegTag

impl<_T> Token for Munstkerr<_T> where
    _T: RegTag

impl<_T> Token for Daccviol<_T> where
    _T: RegTag

impl<_T> Token for Iaccviol<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Bfarvalid<_T> where
    _T: RegTag

impl<_T> Token for Lsperr<_T> where
    _T: RegTag

impl<_T> Token for Stkerr<_T> where
    _T: RegTag

impl<_T> Token for Unstkerr<_T> where
    _T: RegTag

impl<_T> Token for Impreciserr<_T> where
    _T: RegTag

impl<_T> Token for Preciserr<_T> where
    _T: RegTag

impl<_T> Token for Ibuserr<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Divbyzero<_T> where
    _T: RegTag

impl<_T> Token for Unaligned<_T> where
    _T: RegTag

impl<_T> Token for Nocp<_T> where
    _T: RegTag

impl<_T> Token for Invpc<_T> where
    _T: RegTag

impl<_T> Token for Invstate<_T> where
    _T: RegTag

impl<_T> Token for Undefinstr<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Debugevt<_T> where
    _T: RegTag

impl<_T> Token for Forced<_T> where
    _T: RegTag

impl<_T> Token for Vecttbl<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for External<_T> where
    _T: RegTag

impl<_T> Token for Vcatch<_T> where
    _T: RegTag

impl<_T> Token for Dwttrap<_T> where
    _T: RegTag

impl<_T> Token for Bkpt<_T> where
    _T: RegTag

impl<_T> Token for Halted<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Address<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Address<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Impdef<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Trcena<_T> where
    _T: RegTag

impl<_T> Token for MonReq<_T> where
    _T: RegTag

impl<_T> Token for MonStep<_T> where
    _T: RegTag

impl<_T> Token for MonPend<_T> where
    _T: RegTag

impl<_T> Token for MonEn<_T> where
    _T: RegTag

impl<_T> Token for VcHarderr<_T> where
    _T: RegTag

impl<_T> Token for VcInterr<_T> where
    _T: RegTag

impl<_T> Token for VcBuserr<_T> where
    _T: RegTag

impl<_T> Token for VcStaterr<_T> where
    _T: RegTag

impl<_T> Token for VcChkerr<_T> where
    _T: RegTag

impl<_T> Token for VcNocperr<_T> where
    _T: RegTag

impl<_T> Token for VcMmerr<_T> where
    _T: RegTag

impl<_T> Token for VcCorereset<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Countflag<_T> where
    _T: RegTag

impl<_T> Token for Clksource<_T> where
    _T: RegTag

impl<_T> Token for Tickint<_T> where
    _T: RegTag

impl<_T> Token for Enable<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Reload<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Current<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Noref<_T> where
    _T: RegTag

impl<_T> Token for Skew<_T> where
    _T: RegTag

impl<_T> Token for Tenms<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Swoscaler<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for Txmode<_T> where
    _T: RegTag

impl<_T: RegTag> Token for Reg<_T>

impl<_T> Token for TrigIn<_T> where
    _T: RegTag

impl<_T> Token for EnFCont<_T> where
    _T: RegTag