pub struct ChainedMap<CS1: ChunkScope, CS2: ChunkScope, Map1: ScopeUniqueMap<CS1>, Map2: ScopeUniqueMap<CS2>> { /* private fields */ }Implementations§
Source§impl<CS1: ChunkScope, CS2, Map1: ScopeUniqueMap<CS1>, Map2: ScopeUniqueMap<CS2>> ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1: ChunkScope, CS2, Map1: ScopeUniqueMap<CS1>, Map2: ScopeUniqueMap<CS2>> ChainedMap<CS1, CS2, Map1, Map2>
Trait Implementations§
Source§impl<CS1: Clone + ChunkScope, CS2: Clone + ChunkScope, Map1: Clone + ScopeUniqueMap<CS1>, Map2: Clone + ScopeUniqueMap<CS2>> Clone for ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1: Clone + ChunkScope, CS2: Clone + ChunkScope, Map1: Clone + ScopeUniqueMap<CS1>, Map2: Clone + ScopeUniqueMap<CS2>> Clone for ChainedMap<CS1, CS2, Map1, Map2>
Source§fn clone(&self) -> ChainedMap<CS1, CS2, Map1, Map2>
fn clone(&self) -> ChainedMap<CS1, CS2, Map1, Map2>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<CS1: ChunkScope, CS2, Map1, Map2> ScopeUniqueMap<ChainedScope<CS1, CS2>> for ChainedMap<CS1, CS2, Map1, Map2>where
CS2: ChunkScope<FromScope = CS1::ToScope> + ChunkScope,
Map1: ScopeUniqueMap<CS1>,
Map2: ScopeUniqueMap<CS2>,
Map2::GlobalIndexType: AsPrimitive<Map1::IndexType>,
Chain two mapping strategies.
For example,
block_size = (32 * 4, 1, 1),
MapLinear(64) + MapLinear(2) = MapLinear
idx -> map2(idx) -> map1(map2(idx))
0 -> 0 -> 0
1 -> 1 -> 1
2 -> 64 -> 4 * 64
3 -> 65 -> 4 * 64 + 1
impl<CS1: ChunkScope, CS2, Map1, Map2> ScopeUniqueMap<ChainedScope<CS1, CS2>> for ChainedMap<CS1, CS2, Map1, Map2>where
CS2: ChunkScope<FromScope = CS1::ToScope> + ChunkScope,
Map1: ScopeUniqueMap<CS1>,
Map2: ScopeUniqueMap<CS2>,
Map2::GlobalIndexType: AsPrimitive<Map1::IndexType>,
Chain two mapping strategies.
For example,
block_size = (32 * 4, 1, 1),
MapLinear
type IndexType = <Map2 as ScopeUniqueMap<CS2>>::IndexType
type GlobalIndexType = <Map1 as ScopeUniqueMap<CS1>>::GlobalIndexType
Source§fn map(
&self,
idx: Self::IndexType,
thread_ids: [u32; 6],
) -> (bool, Self::GlobalIndexType)
fn map( &self, idx: Self::IndexType, thread_ids: [u32; 6], ) -> (bool, Self::GlobalIndexType)
Returns the extra precondition of indexing operation and the global
index. Without providing extra precondition, index will always check the
OOB error with global idx.
fn precondition(&self) -> bool
impl<CS1: Copy + ChunkScope, CS2: Copy + ChunkScope, Map1: Copy + ScopeUniqueMap<CS1>, Map2: Copy + ScopeUniqueMap<CS2>> Copy for ChainedMap<CS1, CS2, Map1, Map2>
Auto Trait Implementations§
impl<CS1, CS2, Map1, Map2> Freeze for ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1, CS2, Map1, Map2> RefUnwindSafe for ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1, CS2, Map1, Map2> Send for ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1, CS2, Map1, Map2> Sync for ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1, CS2, Map1, Map2> Unpin for ChainedMap<CS1, CS2, Map1, Map2>
impl<CS1, CS2, Map1, Map2> UnwindSafe for ChainedMap<CS1, CS2, Map1, Map2>
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