Enum RoleRule

Source
pub enum RoleRule {
    MainFlowOnly,
    LoadOnlyFirst(Threshold),
    LoadOnlyLast(Threshold),
}
Expand description

Rule to distinguish a plane’s role based on its plane id

Variants§

§

MainFlowOnly

All planes are in the main flow, this is equivalent of having no specialization

§

LoadOnlyFirst(Threshold)

Load-only planes: [0, Threshold) Main flow planes: [Threshold, total)

§

LoadOnlyLast(Threshold)

Main flow planes: [0, Threshold) Load-only planes: [Threshold, total)

Implementations§

Source§

impl RoleRule

Source

pub fn new_MainFlowOnly() -> Self

Source

pub fn __expand_new_MainFlowOnly(_: &mut Scope) -> RoleRuleExpand

Source

pub fn new_LoadOnlyFirst(_0: Threshold) -> Self

Source

pub fn __expand_new_LoadOnlyFirst( _: &mut Scope, _0: <Threshold as CubeType>::ExpandType, ) -> RoleRuleExpand

Source

pub fn new_LoadOnlyLast(_0: Threshold) -> Self

Source

pub fn __expand_new_LoadOnlyLast( _: &mut Scope, _0: <Threshold as CubeType>::ExpandType, ) -> RoleRuleExpand

Source§

impl RoleRule

Source

pub fn new(comptime_rule: RoleRuleConfig) -> RoleRule

Make a cube role rule from comptime config

Source

pub fn is_load_only(self) -> bool

Whether the current plane is a load-only plane

Source

pub fn compute_index(self) -> u32

The index of the current plane among planes that perform compute, ignoring load-only planes

Source

pub fn load_index( self, ident: InputIdent, specialized_loading_sides: SpecializedLoadingSides, ) -> u32

The index of the current plane among planes that perform loading, ignoring any plane that does not participate for this ident.

Source

pub fn __expand_new( scope: &mut Scope, comptime_rule: RoleRuleConfig, ) -> <RoleRule as CubeType>::ExpandType

Source

pub fn __expand_is_load_only( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <bool as CubeType>::ExpandType

Source

pub fn __expand_compute_index( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ) -> <u32 as CubeType>::ExpandType

Source

pub fn __expand_load_index( scope: &mut Scope, this: <Self as CubeType>::ExpandType, ident: InputIdent, specialized_loading_sides: SpecializedLoadingSides, ) -> <u32 as CubeType>::ExpandType

Trait Implementations§

Source§

impl Clone for RoleRule

Source§

fn clone(&self) -> RoleRule

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CubeDebug for RoleRule

Source§

fn set_debug_name(&self, scope: &mut Scope, name: &'static str)

Set the debug name of this type’s expansion. Should do nothing for types that don’t appear at runtime
Source§

impl CubeType for RoleRule

Source§

type ExpandType = RoleRuleExpand

Source§

fn into_mut(scope: &mut Scope, expand: Self::ExpandType) -> Self::ExpandType

Wrapper around the init method, necessary to type inference.
Source§

impl Debug for RoleRule

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for RoleRule

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for RoleRule

Source§

fn eq(&self, other: &RoleRule) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for RoleRule

Source§

impl Eq for RoleRule

Source§

impl StructuralPartialEq for RoleRule

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> CubeComptime for T
where T: Debug + Hash + Eq + Clone + Copy,