Trait CmpOps

Source
pub trait CmpOps: Sized {
Show 18 methods // Required methods fn max(dims: usize, a: &[Self]) -> Self; fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn min(dims: usize, a: &[Self]) -> Self; fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>; fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B]) where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>;
}
Expand description

Various comparison operations over vectors.

Required Methods§

Source

fn max(dims: usize, a: &[Self]) -> Self

Finds the horizontal max element of a given vector and returns the result.

§Pseudocode
result = -inf

for i in range(dims):
    result = max(result, a[i])

return result
§Panics

Panics if the size of vector a does not match dims.

Source

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Performs an element wise max on each element of vector a and the provided broadcast value, writing the result to result.

§Pseudocode
result = [0; dims]

for i in range(dims):
    result[i] = max(value, a[i])

return result
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Performs an element wise max on each element of vector a and b, writing the result to result.

§Pseudocode
result = [0; dims]

for i in range(dims):
    result[i] = max(a[i], b[i])

return result
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn min(dims: usize, a: &[Self]) -> Self

Finds the horizontal min element of a given vector.

§Pseudocode
result = inf

for i in range(dims):
    result = min(result, a[i])

return result
Source

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Performs an element wise min on each element of vector a and the provided broadcast value, writing the result to result.

§Pseudocode
result = [0; dims]

for i in range(dims):
    result[i] = min(value, a[i])

return result
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Performs an element wise min on each element of vector a and b, writing the result to result.

§Pseudocode
result = [0; dims]

for i in range(dims):
    result[i] = min(a[i], b[i])

return result
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element within vector a of size dims against a provided broadcast value comparing if they are equal returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
mask[i] = a[i] == value ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 0.0 == 0.0 -> true
  • 0.0 == NaN -> false
  • NaN == NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element pair from vectors a and b of size dims comparing if element a is equal to element b returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
    mask[i] = a[i] == b[i] ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 0.0 == 0.0 -> true
  • 0.0 == NaN -> false
  • NaN == NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element within vector a of size dims against a provided broadcast value comparing if they are not equal returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
mask[i] = a[i] != value ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other, meaning in the case of NOT equal, they become true.

  • 0.0 != 1.0 -> true
  • 0.0 != NaN -> true
  • NaN != NaN -> true
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element pair from vectors a and b of size dims comparing if element a is not equal to element b returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
    mask[i] = a[i] != b[i] ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other, meaning in the case of NOT equal, they become true.

  • 0.0 != 1.0 -> true
  • 0.0 != NaN -> true
  • NaN != NaN -> true
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element within vector a of size dims against a provided broadcast value comparing if they are less than returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
mask[i] = a[i] < value ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 0.0 < 1.0 -> true
  • 0.0 < NaN -> false
  • NaN < NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element pair from vectors a and b of size dims comparing if element a is less than element b returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
    mask[i] = a[i] < b[i] ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 0.0 < 1.0 -> true
  • 0.0 < NaN -> false
  • NaN < NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element within vector a of size dims against a provided broadcast value comparing if they are less than or equal returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
mask[i] = a[i] <= value ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 0.0 <= 1.0 -> true
  • 0.0 <= NaN -> false
  • NaN <= NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element pair from vectors a and b of size dims comparing if element a is less than or equal to element b returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
    mask[i] = a[i] <= b[i] ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 0.0 <= 1.0 -> true
  • 0.0 <= NaN -> false
  • NaN <= NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element within vector a of size dims against a provided broadcast value comparing if they are less than or equal returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
mask[i] = a[i] > value ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 1.0 > 0.0 -> true
  • 1.0 > NaN -> false
  • NaN > NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element pair from vectors a and b of size dims comparing if element a is greater than element b returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
    mask[i] = a[i] > b[i] ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 1.0 > 0.0 -> true
  • 1.0 > NaN -> false
  • NaN > NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Source

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element within vector a of size dims against a provided broadcast value comparing if they are less than or equal returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
mask[i] = a[i] >= value ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 1.0 >= 0.0 -> true
  • 1.0 >= NaN -> false
  • NaN >= NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a or result does not match dims.

Source

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Checks each element pair from vectors a and b of size dims comparing if element a is greater than element b returning a mask vector of the same type.

§Pseudocode
mask = [0; dims]

for i in range(dims):
    mask[i] = a[i] >= b[i] ? 1 : 0

return mask
§Note on NaN handling on f32/f64 types

For f32 and f64 types, NaN values are handled as always being false in ANY comparison. Even when compared against each other.

  • 1.0 >= 0.0 -> true
  • 1.0 >= NaN -> false
  • NaN >= NaN -> false
§Result buffer

The result buffer can be either an initialized slice i.e. &mut [Self] or it can be a slice holding potentially uninitialized data i.e. &mut [MaybeUninit<Self>].

Once the operation is complete, it is safe to assume the data written is fully initialized.

§Panics

Panics if the size of vector a, b or result does not match dims.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl CmpOps for f32

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for f64

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for i8

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for i16

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for i32

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for i64

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for u8

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for u16

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for u32

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

impl CmpOps for u64

Source§

fn max(dims: usize, a: &[Self]) -> Self

Source§

fn max_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn max_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min(dims: usize, a: &[Self]) -> Self

Source§

fn min_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn min_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn eq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn neq_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn lte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gt_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_value<B>(dims: usize, value: Self, a: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Source§

fn gte_vector<B>(dims: usize, a: &[Self], b: &[Self], result: &mut [B])
where for<'a> &'a mut [B]: WriteOnlyBuffer<Item = Self>,

Implementors§