Skip to main content

CapacityError

Struct CapacityError 

Source
pub struct CapacityError<T> {
    pub capacity: SizeHint,
    pub kind: CapacityErrorKind<T>,
}
Expand description

An error indicating that a collection or extension operation failed because of a conflict between the collection’s capacity and the number of items produced by an Iterator.

This error represents three failure modes, identified by CapacityError::kind.

  • CapacityErrorKind::Bounds — the iterator’s reported size bounds are incompatible with the required capacity, making the operation impossible to satisfy even before iteration begins.

  • CapacityErrorKind::Underflow — the iterator produced fewer items than the minimum required by the capacity.

  • CapacityErrorKind::Overflow — the iterator produced more items than the maximum allowed by the capacity. The item that caused the overflow is preserved, and may be recovered via ErrorItemProvider. The number of overflowing items is implied to be at least one, but may be more.

§Type Parameters

  • T: The type of the item in the collection.

Fields§

§capacity: SizeHint

The capacity constraint that was violated.

§kind: CapacityErrorKind<T>

The specific kind of capacity mismatch that occurred.

Implementations§

Source§

impl<T> CapacityError<T>

Source

pub const fn bounds(capacity: SizeHint, hint: SizeHint) -> Self

Creates a new Bounds CapacityError indicating that hint bounds are incompatible with capacity.

§Arguments
  • capacity - the capacity of the collection
  • hint - the size hint of the iterator
§Panics

Panics if capacity and hint overlap.

§Examples
let err = CapacityError::<i32>::bounds(SizeHint::exact(5), SizeHint::exact(2));

assert_eq!(err.capacity, SizeHint::exact(5));
assert_eq!(err.kind, CapacityErrorKind::Bounds { hint: SizeHint::exact(2) });
Source

pub fn ensure_fits<I: Iterator<Item = T>>( iter: &I, capacity: SizeHint, ) -> Result<(), Self>

Ensures that iter’s size_hint overlaps capacity.

§Arguments
  • iter - the Iterator to check.
  • capacity - the capacity of the collection
§Errors

Returns a Bounds CapacityError if iter’s size_hint is disjoint with cap.

§Panics

Panics if iter’s size_hint is invalid.

§Examples
CapacityError::<i32>::ensure_fits(&(1..=5), SizeHint::at_most(5)).expect("Should fit");

let err = CapacityError::<i32>::ensure_fits(&(1..=5), SizeHint::at_most(4))
    .expect_err("Should fit");

assert_eq!(err.capacity, SizeHint::at_most(4));
assert_eq!(err.kind, CapacityErrorKind::Bounds { hint: SizeHint::exact(5) });
Source

pub const fn overflow(capacity: SizeHint, overflow: T) -> Self

Creates a new CapacityError indicating that the collection overflowed capacity.

§Arguments
  • capacity - The capacity that overflowed.
  • overflow - The item that overflowed capacity.
§Panics

Panics if capacity is not bounded.

§Examples
let err = CapacityError::overflow(SizeHint::exact(5), 2);

assert_eq!(err.capacity, SizeHint::exact(5));
assert_eq!(err.kind, CapacityErrorKind::Overflow { overflow: 2 });
Source

pub const fn underflow(capacity: SizeHint, count: usize) -> Self

Creates a new CapacityError indicating that fewer items were produced than the minimum required by capacity.

§Arguments
  • capacity - The capacity that was underflowed.
  • count - The number of items that were produced.
§Panics

Panics if count is greater than or equal to capacity.lower().

§Examples
let err = CapacityError::<i32>::underflow(SizeHint::exact(5), 2);

assert_eq!(err.capacity, SizeHint::exact(5));
assert_eq!(err.kind, CapacityErrorKind::Underflow { count: 2 });
Source

pub const fn underflow_of<C: FixedCap>(count: usize) -> Self

Creates a new CapacityError indicating that fewer items were produced than the minimum required by C’s FixedCap::CAP.

§Arguments
  • count - The number of items that were produced.
§Type Parameters
  • C - A collection with a fixed capaciy.
§Examples
let err = CapacityError::<i32>::underflow_of::<[i32; 5]>(2);

assert_eq!(err.capacity, SizeHint::exact(5));
assert_eq!(err.kind, CapacityErrorKind::Underflow { count: 2 });

Trait Implementations§

Source§

impl<T: Debug> Debug for CapacityError<T>

Source§

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

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

impl<T> Display for CapacityError<T>

Source§

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

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

impl<T> Error for CapacityError<T>
where Self: Debug + Display,

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl<T> ErrorItemProvider for CapacityError<T>

Source§

type Item = T

The type of the item that may be contained in this error.
Source§

fn into_item(self) -> Option<Self::Item>

Consumes the error and returns the rejected item, if any. Read more
Source§

fn item(&self) -> Option<&Self::Item>

Returns a reference to the rejected item, if any. Read more
Source§

impl<T> From<CapacityError<T>> for CapacityError<T>

Available on crate feature arrayvec only.
Source§

fn from(err: CapacityError<T>) -> Self

Converts to this type from the input type.
Source§

impl<T: PartialEq> PartialEq for CapacityError<T>

Source§

fn eq(&self, other: &CapacityError<T>) -> 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<T: Eq> Eq for CapacityError<T>

Source§

impl<T> StructuralPartialEq for CapacityError<T>

Auto Trait Implementations§

§

impl<T> Freeze for CapacityError<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for CapacityError<T>
where T: RefUnwindSafe,

§

impl<T> Send for CapacityError<T>
where T: Send,

§

impl<T> Sync for CapacityError<T>
where T: Sync,

§

impl<T> Unpin for CapacityError<T>
where T: Unpin,

§

impl<T> UnwindSafe for CapacityError<T>
where T: UnwindSafe,

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

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoOption for T

Source§

fn into_some(self) -> Option<Self>
where Self: Sized,

Moves a value into a Some variant of Option. Read more
Source§

fn into_none<TOut>(self) -> Option<TOut>
where Self: Sized,

Turns a value into None. Read more
Source§

impl<T> IntoResult for T

Source§

fn into_ok<E>(self) -> Result<Self, E>
where Self: Sized,

Moves a value into an Ok variant of a Result. Read more
Source§

fn into_err<T>(self) -> Result<T, Self>
where Self: Sized,

Move a error value into an Err variant of a Result. Read more
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
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> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.