pub struct Array<Offset: Unsigned, T, Rest>(/* private fields */);Expand description
A type-fu linked list.
Trait Implementations§
Source§impl<Offset: Unsigned, T: NonZero, Rest: IBitMask> IBitMask for Array<Offset, T, Rest>
impl<Offset: Unsigned, T: NonZero, Rest: IBitMask> IBitMask for Array<Offset, T, Rest>
Source§type Tuple = ((usize, usize), <Rest as IBitMask>::Tuple)
type Tuple = ((usize, usize), <Rest as IBitMask>::Tuple)
The type of the runtime-exposed mask.
Source§type ByteAt<O: Unsigned> = <<Offset as IUnsigned>::Equal<O> as IBit>::UTernary<T, <Rest as IBitMask>::ByteAt<O>>
type ByteAt<O: Unsigned> = <<Offset as IUnsigned>::Equal<O> as IBit>::UTernary<T, <Rest as IBitMask>::ByteAt<O>>
Self[O]Source§type BitAnd<Mask: IBitMask> = <<<T as IUnsigned>::BitAnd<<Mask as IBitMask>::ByteAt<Offset>> as IUnsigned>::Equal<UTerm> as IBit>::BmTernary<<Rest as IBitMask>::BitAnd<Mask>, Array<Offset, <<T as IUnsigned>::BitAnd<<Mask as IBitMask>::ByteAt<Offset>> as IUnsigned>::NonZero, <Rest as IBitMask>::BitAnd<Mask>>>
type BitAnd<Mask: IBitMask> = <<<T as IUnsigned>::BitAnd<<Mask as IBitMask>::ByteAt<Offset>> as IUnsigned>::Equal<UTerm> as IBit>::BmTernary<<Rest as IBitMask>::BitAnd<Mask>, Array<Offset, <<T as IUnsigned>::BitAnd<<Mask as IBitMask>::ByteAt<Offset>> as IUnsigned>::NonZero, <Rest as IBitMask>::BitAnd<Mask>>>
Self & TSource§type Shift<O: Unsigned> = Array<<Offset as IUnsigned>::Add<O>, T, <Rest as IBitMask>::Shift<O>>
type Shift<O: Unsigned> = Array<<Offset as IUnsigned>::Add<O>, T, <Rest as IBitMask>::Shift<O>>
Shift the bitmask by
O bytes.Source§type HasFreeByteAt<O: Unsigned> = <<<O as IUnsigned>::Equal<Offset> as IBit>::And<<T as IUnsigned>::Equal<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B1>, B1>, B1>, B1>>> as IBit>::Or<<Rest as IBitMask>::HasFreeByteAt<O>>
type HasFreeByteAt<O: Unsigned> = <<<O as IUnsigned>::Equal<Offset> as IBit>::And<<T as IUnsigned>::Equal<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B1>, B1>, B1>, B1>>> as IBit>::Or<<Rest as IBitMask>::HasFreeByteAt<O>>
Checks whether the mask is
FF at index OSource§type ExtractBit = <<<T as IUnsigned>::AbsSub<<T as NonZero>::TruncateAtRightmostOne> as IUnsigned>::Greater<UTerm> as IBit>::BmTernary<Array<Offset, <<T as IUnsigned>::AbsSub<<T as NonZero>::TruncateAtRightmostOne> as IUnsigned>::NonZero, Rest>, Rest>
type ExtractBit = <<<T as IUnsigned>::AbsSub<<T as NonZero>::TruncateAtRightmostOne> as IUnsigned>::Greater<UTerm> as IBit>::BmTernary<Array<Offset, <<T as IUnsigned>::AbsSub<<T as NonZero>::TruncateAtRightmostOne> as IUnsigned>::NonZero, Rest>, Rest>
Remove the next bit that will be used as a determinant in enums.
Source§type ExtractedBitByteOffset = Offset
type ExtractedBitByteOffset = Offset
Obtain the determinant’s offset in bytes.
Source§type ExtractedBitMask = <T as NonZero>::TruncateAtRightmostOne
type ExtractedBitMask = <T as NonZero>::TruncateAtRightmostOne
Obtain the determinant’s mask.
Source§impl<Offset: Unsigned, T: Unsigned, Rest: IForbiddenValues> IForbiddenValues for Array<Offset, T, Rest>
impl<Offset: Unsigned, T: Unsigned, Rest: IForbiddenValues> IForbiddenValues for Array<Offset, T, Rest>
Source§type Shift<O: Unsigned> = Array<<Offset as IUnsigned>::Add<O>, T, <Rest as IForbiddenValues>::Shift<O>>
type Shift<O: Unsigned> = Array<<Offset as IUnsigned>::Add<O>, T, <Rest as IForbiddenValues>::Shift<O>>
Shift all values in the set by
O bytesSource§type SelectFrom<Mask: IBitMask> = <<<Mask as IBitMask>::HasFreeByteAt<Offset> as IBitBase>::AsForbiddenValue as ISingleForbiddenValue>::And<<<Rest as IForbiddenValues>::SelectFrom<Mask> as ISingleForbiddenValue>::Push<Offset, T>>
type SelectFrom<Mask: IBitMask> = <<<Mask as IBitMask>::HasFreeByteAt<Offset> as IBitBase>::AsForbiddenValue as ISingleForbiddenValue>::And<<<Rest as IForbiddenValues>::SelectFrom<Mask> as ISingleForbiddenValue>::Push<Offset, T>>
Extract a single forbidden value that fits within
MaskSource§impl<Offset: Unsigned, T, Rest: ISingleForbiddenValue> ISingleForbiddenValue for Array<Offset, T, Rest>
impl<Offset: Unsigned, T, Rest: ISingleForbiddenValue> ISingleForbiddenValue for Array<Offset, T, Rest>
Source§impl<O1: Unsigned, T1, R1, O2: Unsigned, T2, R2: IBitMask> Includes<Array<O1, T1, R1>> for Array<O2, T2, R2>
impl<O1: Unsigned, T1, R1, O2: Unsigned, T2, R2: IBitMask> Includes<Array<O1, T1, R1>> for Array<O2, T2, R2>
Source§impl<O1: Unsigned, T1, O2: Unsigned, T2, R2: IBitMask> IncludesComputer<(O1, T1)> for Array<O2, T2, R2>
impl<O1: Unsigned, T1, O2: Unsigned, T2, R2: IBitMask> IncludesComputer<(O1, T1)> for Array<O2, T2, R2>
Source§impl<O1: Unsigned, T1, O2: Unsigned, T2, R2> IncludesComputer<(O1, T1, B0)> for Array<O2, T2, R2>
impl<O1: Unsigned, T1, O2: Unsigned, T2, R2> IncludesComputer<(O1, T1, B0)> for Array<O2, T2, R2>
Source§impl<O1: Unsigned, T1, O2: Unsigned, T2: Unsigned, R2: IBitMask> IncludesComputer<(O1, T1, B1)> for Array<O2, T2, R2>
impl<O1: Unsigned, T1, O2: Unsigned, T2: Unsigned, R2: IBitMask> IncludesComputer<(O1, T1, B1)> for Array<O2, T2, R2>
Source§impl<O1: Unsigned, T1, O2: Unsigned, T2, R2: IBitMask> IncludesComputer<(O1, T1, B1, B0)> for Array<O2, T2, R2>
impl<O1: Unsigned, T1, O2: Unsigned, T2, R2: IBitMask> IncludesComputer<(O1, T1, B1, B0)> for Array<O2, T2, R2>
Source§impl<O1: Unsigned, T1, O2: Unsigned, T2, R2: IBitMask> IncludesComputer<(O1, T1, B1, B1)> for Array<O2, T2, R2>
impl<O1: Unsigned, T1, O2: Unsigned, T2, R2: IBitMask> IncludesComputer<(O1, T1, B1, B1)> for Array<O2, T2, R2>
Source§impl<Offset: Unsigned, Value: Unsigned, Tail: IForbiddenValues + IntoValueIsErr> IntoValueIsErr for Array<Offset, Value, Tail>
impl<Offset: Unsigned, Value: Unsigned, Tail: IForbiddenValues + IntoValueIsErr> IntoValueIsErr for Array<Offset, Value, Tail>
Source§type ValueIsErr = ValueIsErr<Offset, Value, <Tail as IntoValueIsErr>::ValueIsErr>
type ValueIsErr = ValueIsErr<Offset, Value, <Tail as IntoValueIsErr>::ValueIsErr>
The coerced type.
Auto Trait Implementations§
impl<Offset, T, Rest> Freeze for Array<Offset, T, Rest>
impl<Offset, T, Rest> RefUnwindSafe for Array<Offset, T, Rest>
impl<Offset, T, Rest> Send for Array<Offset, T, Rest>
impl<Offset, T, Rest> Sync for Array<Offset, T, Rest>
impl<Offset, T, Rest> Unpin for Array<Offset, T, Rest>
impl<Offset, T, Rest> UnwindSafe for Array<Offset, T, Rest>
Blanket Implementations§
Source§impl<Source> AccessAs for Source
impl<Source> AccessAs for Source
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more