#[repr(C)]pub struct CStackList<H, T: CStackListHeadLimit>(pub T, pub H);Expand description
A list using a guaranteed memory layout (repr(C)), with tail stored first so appending items
does not change the memory layout of prior items.
Tuple Fields§
§0: T§1: HTrait Implementations§
Source§impl<H: 'static, T: CStackListHeadLimit> CStackListHeadLimit for CStackList<H, T>
impl<H: 'static, T: CStackListHeadLimit> CStackListHeadLimit for CStackList<H, T>
Source§const HEAD_LIMIT: usize
const HEAD_LIMIT: usize
The offset to the end of the head element.
Source§impl<H: 'static, T: CStackListHeadLimit> CStackListHeadPadded for CStackList<H, T>
impl<H: 'static, T: CStackListHeadLimit> CStackListHeadPadded for CStackList<H, T>
Source§const HEAD_PADDED: bool
const HEAD_PADDED: bool
Whether the head element is padded to the next alignment boundary.
Source§impl<H: Clone, T: Clone + CStackListHeadLimit> Clone for CStackList<H, T>
impl<H: Clone, T: Clone + CStackListHeadLimit> Clone for CStackList<H, T>
Source§fn clone(&self) -> CStackList<H, T>
fn clone(&self) -> CStackList<H, T>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<H, T> Debug for CStackList<H, T>
impl<H, T> Debug for CStackList<H, T>
Source§impl<H: 'static, T: List + CStackListHeadLimit, Idx> Index<Idx> for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit, Idx> Index<Idx> for CStackList<H, T>
Source§impl<A: 'static> IntoRustTuple for CStackList<A, CNil<()>>
impl<A: 'static> IntoRustTuple for CStackList<A, CNil<()>>
Source§impl<A: 'static, B: 'static> IntoRustTuple for CStackList<A, CStackList<B, CNil<()>>>
impl<A: 'static, B: 'static> IntoRustTuple for CStackList<A, CStackList<B, CNil<()>>>
Source§impl<A: 'static, B: 'static, C: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CNil<()>>>>
impl<A: 'static, B: 'static, C: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CNil<()>>>>
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CNil<()>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CNil<()>>>>>
Source§type Tuple = (A, B, C, D)
type Tuple = (A, B, C, D)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CNil<()>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CNil<()>>>>>>
Source§type Tuple = (A, B, C, D, E)
type Tuple = (A, B, C, D, E)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CNil<()>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CNil<()>>>>>>>
Source§type Tuple = (A, B, C, D, E, F)
type Tuple = (A, B, C, D, E, F)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CNil<()>>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CNil<()>>>>>>>>
Source§type Tuple = (A, B, C, D, E, F, G)
type Tuple = (A, B, C, D, E, F, G)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CNil<()>>>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CNil<()>>>>>>>>>
Source§type Tuple = (A, B, C, D, E, F, G, H)
type Tuple = (A, B, C, D, E, F, G, H)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CNil<()>>>>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CNil<()>>>>>>>>>>
Source§type Tuple = (A, B, C, D, E, F, G, H, I)
type Tuple = (A, B, C, D, E, F, G, H, I)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static, J: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CStackList<J, CNil<()>>>>>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static, J: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CStackList<J, CNil<()>>>>>>>>>>>
Source§type Tuple = (A, B, C, D, E, F, G, H, I, J)
type Tuple = (A, B, C, D, E, F, G, H, I, J)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static, J: 'static, K: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CStackList<J, CStackList<K, CNil<()>>>>>>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static, J: 'static, K: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CStackList<J, CStackList<K, CNil<()>>>>>>>>>>>>
Source§type Tuple = (A, B, C, D, E, F, G, H, I, J, K)
type Tuple = (A, B, C, D, E, F, G, H, I, J, K)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static, J: 'static, K: 'static, L: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CStackList<J, CStackList<K, CStackList<L, CNil<()>>>>>>>>>>>>>
impl<A: 'static, B: 'static, C: 'static, D: 'static, E: 'static, F: 'static, G: 'static, H: 'static, I: 'static, J: 'static, K: 'static, L: 'static> IntoRustTuple for CStackList<A, CStackList<B, CStackList<C, CStackList<D, CStackList<E, CStackList<F, CStackList<G, CStackList<H, CStackList<I, CStackList<J, CStackList<K, CStackList<L, CNil<()>>>>>>>>>>>>>
Source§type Tuple = (A, B, C, D, E, F, G, H, I, J, K, L)
type Tuple = (A, B, C, D, E, F, G, H, I, J, K, L)
The native tuple type with fields in logical source order.
Source§fn into_rust_tuple(self) -> Self::Tuple
fn into_rust_tuple(self) -> Self::Tuple
Moves each logical field into the corresponding native tuple field. Read more
Source§impl<H: 'static, T: List + CStackListHeadLimit> List for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit> List for CStackList<H, T>
Source§type Push<U: 'static> = CStackList<U, CStackList<H, T>>
type Push<U: 'static> = CStackList<U, CStackList<H, T>>
The type of the list after pushing a new value.
Source§type Append<U: List> = <<T as List>::Append<U> as List>::Push<H>
type Append<U: List> = <<T as List>::Append<U> as List>::Push<H>
The style of
List appended to SelfSource§type ReverseOnto<U: List> = <T as List>::ReverseOnto<<U as List>::Push<H>>
type ReverseOnto<U: List> = <T as List>::ReverseOnto<<U as List>::Push<H>>
The resulting list when reversing
Self onto U.Source§fn empty() -> Self::Empty
fn empty() -> Self::Empty
Returns a new empty list that can be used to create a list with the same characteristics.
Source§fn push<U: 'static>(self, item: U) -> Self::Push<U>
fn push<U: 'static>(self, item: U) -> Self::Push<U>
Pushes a new value onto the front of the list, returning a new list.
Source§fn reverse_onto<U: List>(self, other: U) -> Self::ReverseOnto<U>
fn reverse_onto<U: List>(self, other: U) -> Self::ReverseOnto<U>
Reverse
Self and append the result to other.Source§impl<H: 'static, T, U: Unsigned, B: Bit> ListIndex<RangeFrom<UInt<U, B>>> for CStackList<H, T>
impl<H: 'static, T, U: Unsigned, B: Bit> ListIndex<RangeFrom<UInt<U, B>>> for CStackList<H, T>
Source§impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<RangeFrom<UTerm>> for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<RangeFrom<UTerm>> for CStackList<H, T>
Source§impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<RangeTo<UTerm>> for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<RangeTo<UTerm>> for CStackList<H, T>
Source§impl<H: 'static, T, U: Unsigned, B: Bit> ListIndex<RangeToInclusive<UInt<U, B>>> for CStackList<H, T>where
T: ListIndex<RangeToInclusive<Sub1<UInt<U, B>>>> + List + CStackListHeadLimit,
<T as ListIndex<RangeToInclusive<Sub1<UInt<U, B>>>>>::Output: List,
UInt<U, B>: Sub<B1>,
impl<H: 'static, T, U: Unsigned, B: Bit> ListIndex<RangeToInclusive<UInt<U, B>>> for CStackList<H, T>where
T: ListIndex<RangeToInclusive<Sub1<UInt<U, B>>>> + List + CStackListHeadLimit,
<T as ListIndex<RangeToInclusive<Sub1<UInt<U, B>>>>>::Output: List,
UInt<U, B>: Sub<B1>,
Source§impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<RangeToInclusive<UTerm>> for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<RangeToInclusive<UTerm>> for CStackList<H, T>
Source§impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<UTerm> for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit> ListIndex<UTerm> for CStackList<H, T>
Source§impl<P: ListTypeProperty, H: 'static, T: ListTypeIteratorAdvance<P> + CStackListHeadLimit> ListTypeIteratorAdvance<P> for CStackList<H, T>
impl<P: ListTypeProperty, H: 'static, T: ListTypeIteratorAdvance<P> + CStackListHeadLimit> ListTypeIteratorAdvance<P> for CStackList<H, T>
Source§impl<H, T, O: List> PartialEq<O> for CStackList<H, T>
impl<H, T, O: List> PartialEq<O> for CStackList<H, T>
Source§impl<H: 'static, T: List + CStackListHeadLimit> StackResult for CStackList<H, T>
impl<H: 'static, T: List + CStackListHeadLimit> StackResult for CStackList<H, T>
Source§unsafe fn take_result(stack: &mut RawStack) -> H
unsafe fn take_result(stack: &mut RawStack) -> H
Transfers the concrete head out of its owned stack slot.
Source§impl<H: 'static, T: ToTypeIdList + 'static + CStackListHeadLimit> ToTypeIdList for CStackList<H, T>
impl<H: 'static, T: ToTypeIdList + 'static + CStackListHeadLimit> ToTypeIdList for CStackList<H, T>
Source§fn to_stack_info_list() -> Vec<StackInfo>
fn to_stack_info_list() -> Vec<StackInfo>
Enumerates tail storage followed by the opaque head.
- Complexity: O(n) slots for n list elements.
Auto Trait Implementations§
impl<H, T> Freeze for CStackList<H, T>
impl<H, T> RefUnwindSafe for CStackList<H, T>where
T: RefUnwindSafe,
H: RefUnwindSafe,
impl<H, T> Send for CStackList<H, T>
impl<H, T> Sync for CStackList<H, T>
impl<H, T> Unpin for CStackList<H, T>
impl<H, T> UnsafeUnpin for CStackList<H, T>where
T: UnsafeUnpin,
H: UnsafeUnpin,
impl<H, T> UnwindSafe for CStackList<H, T>where
T: UnwindSafe,
H: UnwindSafe,
Blanket Implementations§
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