Enum Slice

Source
#[non_exhaustive]
pub enum Slice { All(), None(), Single(usize), Range(Range<usize>), Not(Box<Slice>), And(Box<Slice>, Box<Slice>), Or(Box<Slice>, Box<Slice>), }
Expand description

A slice defines across one dimension what values are accepted, it can act like a filter. Slices can also be constructed via boolean logic operations in the same way as in predicate logic expressions.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

All()

A slice that accepts all indexes

§

None()

A slice that accepts no indexes

§

Single(usize)

A slice that accepts only the provided index

§

Range(Range<usize>)

A slice that accepts only indexes within the range

§

Not(Box<Slice>)

A slice which rejects all indexes accepted by the argument, and accepts all indexes rejected by the argument.

§

And(Box<Slice>, Box<Slice>)

A slice which accepts only indexes accepted by both arguments, and rejects all others.

§

Or(Box<Slice>, Box<Slice>)

A slice which accepts indexes accepted by either arguments, and rejects only indexes accepted by neither. This is an inclusive or.

You could construct an exclusive or by using combinations of AND, OR and NOT as (a AND (NOT b)) OR ((NOT a) AND b) = a XOR b.

Implementations§

Source§

impl Slice

Source

pub fn accepts(&self, index: usize) -> bool

Checks if this slice accepts some index.

Source

pub fn not(self) -> Slice

Returns the negation of this slice

Source

pub fn and(self, other: Slice) -> Slice

Returns the and of this slice and the other one

Source

pub fn or(self, other: Slice) -> Slice

Returns the or of this slice and the other one

Auto Trait Implementations§

§

impl Freeze for Slice

§

impl RefUnwindSafe for Slice

§

impl Send for Slice

§

impl Sync for Slice

§

impl Unpin for Slice

§

impl UnwindSafe for Slice

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> 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, 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.