Struct Interval

Source
pub struct Interval { /* private fields */ }
Expand description

Represents an inclusive interval with a minimum value and an optional maximum value.

When the maximum is None, the interval is considered unbounded above.

Implementations§

Source§

impl Interval

Source

pub fn new(range: impl RangeBounds<usize>) -> Self

Creates a new Interval from any type that implements RangeBounds<usize>.

This allows creating intervals from Rust’s range expressions like 1..5, 0..=10, or 2...

Source

pub fn min(&self) -> usize

Returns the minimum value of the interval.

Source

pub fn max(&self) -> Option<usize>

Returns the maximum value of the interval, or None if the interval is unbounded.

Source

pub fn contains(&self, count: usize) -> bool

Checks if the given count falls within this interval.

Source

pub fn is_single(&self) -> bool

Checks if the interval represents a single value (i.e., min equals max).

Source

pub fn is_unbounded(&self) -> bool

Checks if the interval is unbounded (i.e., has no maximum value).

Source

pub fn range_notation(&self) -> String

Returns a string representation of the interval using standard range notation.

Examples:

  • {3} for the single value 3
  • {1,5} for the range 1 to 5 inclusive
  • {2,} for 2 or more
Source

pub fn shorthand_notation(&self) -> String

Returns a string representation of the interval using shorthand notation where applicable.

Examples:

  • ? for {0,1} (optional)
  • * for {0,} (zero or more)
  • + for {1,} (one or more)

Trait Implementations§

Source§

impl Clone for Interval

Source§

fn clone(&self) -> Interval

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 Debug for Interval

Source§

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

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

impl Default for Interval

Source§

fn default() -> Interval

Returns the “default value” for a type. Read more
Source§

impl Display for Interval

Implements the Display trait for Interval, using the range_notation format.

Source§

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

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

impl From<Quantifier> for Interval

Source§

fn from(quantifier: Quantifier) -> Self

Converts to this type from the input type.
Source§

impl Hash for Interval

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 Interval

Source§

fn eq(&self, other: &Interval) -> 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 RangeBounds<usize> for Interval

Implementation of RangeBounds<usize> for Interval, allowing it to be used in contexts that expect range bounds, such as slice indexing.

Source§

fn start_bound(&self) -> Bound<&usize>

Returns the start bound of the interval.

  • Returns Bound::Unbounded if min is 0
  • Returns Bound::Included(&self.min) otherwise
Source§

fn end_bound(&self) -> Bound<&usize>

Returns the end bound of the interval.

  • Returns Bound::Included(max) if max is Some
  • Returns Bound::Unbounded if max is None
1.35.0 · Source§

fn contains<U>(&self, item: &U) -> bool
where T: PartialOrd<U>, U: PartialOrd<T> + ?Sized,

Returns true if item is contained in the range. Read more
Source§

fn is_empty(&self) -> bool
where T: PartialOrd,

🔬This is a nightly-only experimental API. (range_bounds_is_empty)
Returns true if the range contains no items. One-sided ranges (RangeFrom, etc) always return false. Read more
Source§

impl Copy for Interval

Source§

impl Eq for Interval

Source§

impl StructuralPartialEq for Interval

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<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> Same for T

Source§

type Output = T

Should always be Self
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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> ErasedDestructor for T
where T: 'static,