mirror of
https://git.proxmox.com/git/rustc
synced 2026-01-12 22:17:10 +00:00
50 lines
1.2 KiB
Rust
50 lines
1.2 KiB
Rust
use std::fmt;
|
|
#[cfg(feature="std")]
|
|
use std::any::Any;
|
|
#[cfg(feature="std")]
|
|
use std::error::Error;
|
|
|
|
/// Error value indicating insufficient capacity
|
|
#[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)]
|
|
pub struct CapacityError<T = ()> {
|
|
element: T,
|
|
}
|
|
|
|
impl<T> CapacityError<T> {
|
|
/// Create a new `CapacityError` from `element`.
|
|
pub fn new(element: T) -> CapacityError<T> {
|
|
CapacityError {
|
|
element: element,
|
|
}
|
|
}
|
|
|
|
/// Extract the overflowing element
|
|
pub fn element(self) -> T {
|
|
self.element
|
|
}
|
|
|
|
/// Convert into a `CapacityError` that does not carry an element.
|
|
pub fn simplify(self) -> CapacityError {
|
|
CapacityError { element: () }
|
|
}
|
|
}
|
|
|
|
const CAPERROR: &'static str = "insufficient capacity";
|
|
|
|
#[cfg(feature="std")]
|
|
/// Requires `features="std"`.
|
|
impl<T: Any> Error for CapacityError<T> {}
|
|
|
|
impl<T> fmt::Display for CapacityError<T> {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
write!(f, "{}", CAPERROR)
|
|
}
|
|
}
|
|
|
|
impl<T> fmt::Debug for CapacityError<T> {
|
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
|
write!(f, "{}: {}", "CapacityError", CAPERROR)
|
|
}
|
|
}
|
|
|