1.0.0[][src]Trait rask_server::Error

pub trait Error: Debug + Display {
    fn source(&self) -> Option<&(dyn Error + 'static)> { ... }
fn backtrace(&self) -> Option<&Backtrace> { ... }
fn description(&self) -> &str { ... }
fn cause(&self) -> Option<&dyn Error> { ... } }

Error is a trait representing the basic expectations for error values, i.e., values of type E in Result<T, E>. Errors must describe themselves through the Display and Debug traits, and may provide cause chain information:

Error::source() is generally used when errors cross "abstraction boundaries". If one module must report an error that is caused by an error from a lower-level module, it can allow accessing that error via Error::source(). This makes it possible for the high-level module to provide its own errors while also revealing some of the implementation for debugging via source chains.

Provided methods

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

The lower-level source of this error, if any.

Examples

use std::error::Error;
use std::fmt;

#[derive(Debug)]
struct SuperError {
    side: SuperErrorSideKick,
}

impl fmt::Display for SuperError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "SuperError is here!")
    }
}

impl Error for SuperError {
    fn source(&self) -> Option<&(dyn Error + 'static)> {
        Some(&self.side)
    }
}

#[derive(Debug)]
struct SuperErrorSideKick;

impl fmt::Display for SuperErrorSideKick {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "SuperErrorSideKick is here!")
    }
}

impl Error for SuperErrorSideKick {}

fn get_super_error() -> Result<(), SuperError> {
    Err(SuperError { side: SuperErrorSideKick })
}

fn main() {
    match get_super_error() {
        Err(e) => {
            println!("Error: {}", e);
            println!("Caused by: {}", e.source().unwrap());
        }
        _ => println!("No error"),
    }
}

fn backtrace(&self) -> Option<&Backtrace>

🔬 This is a nightly-only experimental API. (backtrace)

Returns a stack backtrace, if available, of where this error occurred.

This function allows inspecting the location, in code, of where an error happened. The returned Backtrace contains information about the stack trace of the OS thread of execution of where the error originated from.

Note that not all errors contain a Backtrace. Also note that a Backtrace may actually be empty. For more information consult the Backtrace type itself.

fn description(&self) -> &str

👎 Deprecated since 1.42.0:

use the Display impl or to_string()

if let Err(e) = "xc".parse::<u32>() {
    // Print `e` itself, no need for description().
    eprintln!("Error: {}", e);
}

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

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Loading content...

Implementations

impl dyn Error + 'static[src]

pub fn is<T>(&self) -> bool where
    T: 'static + Error
1.3.0[src]

Returns true if the boxed type is the same as T

pub fn downcast_ref<T>(&self) -> Option<&T> where
    T: 'static + Error
1.3.0[src]

Returns some reference to the boxed value if it is of type T, or None if it isn't.

pub fn downcast_mut<T>(&mut self) -> Option<&mut T> where
    T: 'static + Error
1.3.0[src]

Returns some mutable reference to the boxed value if it is of type T, or None if it isn't.

impl dyn Error + 'static + Send[src]

pub fn is<T>(&self) -> bool where
    T: 'static + Error
1.3.0[src]

Forwards to the method defined on the type dyn Error.

pub fn downcast_ref<T>(&self) -> Option<&T> where
    T: 'static + Error
1.3.0[src]

Forwards to the method defined on the type dyn Error.

pub fn downcast_mut<T>(&mut self) -> Option<&mut T> where
    T: 'static + Error
1.3.0[src]

Forwards to the method defined on the type dyn Error.

impl dyn Error + 'static + Sync + Send[src]

pub fn is<T>(&self) -> bool where
    T: 'static + Error
1.3.0[src]

Forwards to the method defined on the type dyn Error.

pub fn downcast_ref<T>(&self) -> Option<&T> where
    T: 'static + Error
1.3.0[src]

Forwards to the method defined on the type dyn Error.

pub fn downcast_mut<T>(&mut self) -> Option<&mut T> where
    T: 'static + Error
1.3.0[src]

Forwards to the method defined on the type dyn Error.

impl dyn Error + 'static[src]

pub fn downcast<T>(
    self: Box<dyn Error + 'static>
) -> Result<Box<T>, Box<dyn Error + 'static>> where
    T: 'static + Error
1.3.0[src]

Attempts to downcast the box to a concrete type.

pub fn chain(&self) -> Chain<'_>[src]

🔬 This is a nightly-only experimental API. (error_iter)

Returns an iterator starting with the current error and continuing with recursively calling Error::source.

If you want to omit the current error and only use its sources, use skip(1).

Examples

#![feature(error_iter)]
use std::error::Error;
use std::fmt;

#[derive(Debug)]
struct A;

#[derive(Debug)]
struct B(Option<Box<dyn Error + 'static>>);

impl fmt::Display for A {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "A")
    }
}

impl fmt::Display for B {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "B")
    }
}

impl Error for A {}

impl Error for B {
    fn source(&self) -> Option<&(dyn Error + 'static)> {
        self.0.as_ref().map(|e| e.as_ref())
    }
}

let b = B(Some(Box::new(A)));

// let err : Box<Error> = b.into(); // or
let err = &b as &(dyn Error);

let mut iter = err.chain();

assert_eq!("B".to_string(), iter.next().unwrap().to_string());
assert_eq!("A".to_string(), iter.next().unwrap().to_string());
assert!(iter.next().is_none());
assert!(iter.next().is_none());

impl dyn Error + 'static + Send[src]

pub fn downcast<T>(
    self: Box<dyn Error + 'static + Send>
) -> Result<Box<T>, Box<dyn Error + 'static + Send>> where
    T: 'static + Error
1.3.0[src]

Attempts to downcast the box to a concrete type.

impl dyn Error + 'static + Sync + Send[src]

pub fn downcast<T>(
    self: Box<dyn Error + 'static + Sync + Send>
) -> Result<Box<T>, Box<dyn Error + 'static + Sync + Send>> where
    T: 'static + Error
1.3.0[src]

Attempts to downcast the box to a concrete type.

Implementations on Foreign Types

impl<T> Error for TryLockError<T>[src]

impl Error for JoinPathsError[src]

impl<T> Error for PoisonError<T>[src]

impl Error for AccessError[src]

impl Error for RecvTimeoutError[src]

impl Error for RecvError[src]

impl Error for FromBytesWithNulError[src]

impl Error for BorrowMutError[src]

impl<T> Error for TrySendError<T> where
    T: Send
[src]

impl<W> Error for IntoInnerError<W> where
    W: Send + Debug
[src]

impl Error for TryRecvError[src]

impl Error for ParseBoolError[src]

impl Error for Error[src]

impl Error for VarError[src]

impl Error for Utf8Error[src]

impl Error for TryReserveError[src]

impl Error for Infallible[src]

impl Error for FromUtf16Error[src]

impl Error for SystemTimeError[src]

impl Error for TryFromIntError[src]

impl Error for TryFromSliceError[src]

impl<T> Error for SendError<T> where
    T: Send
[src]

impl Error for NulError[src]

impl Error for ![src]

impl Error for DecodeUtf16Error[src]

impl Error for AllocErr[src]

impl Error for FromVecWithNulError[src]

impl<T> Error for Box<T> where
    T: Error
[src]

impl Error for BorrowError[src]

impl Error for ParseIntError[src]

impl Error for ParseCharError[src]

impl Error for StripPrefixError[src]

impl Error for LayoutErr[src]

impl Error for AddrParseError[src]

impl Error for FromUtf8Error[src]

impl Error for Error[src]

impl Error for IntoStringError[src]

impl Error for CharTryFromError[src]

impl Error for ParseFloatError[src]

impl Error for ParseLevelError[src]

impl Error for SetLoggerError[src]

impl Error for Error[src]

impl Error for EngineError[src]

impl Error for SkeletonError

impl Error for AtlasError

impl Error for FromHexError

impl Error for Error[src]

impl Error for WrongGeneration

impl Error for NoError

impl Error for Error

impl Error for BoxedErr

impl<L, R> Error for Either<L, R> where
    L: Error,
    R: Error
[src]

Either implements Error if both L and R implement it.

impl Error for ThreadPoolBuildError[src]

impl<T> Error for SendError<T> where
    T: Send

impl<T> Error for TrySendError<T> where
    T: Send

impl Error for TrySelectError

impl Error for RecvTimeoutError

impl Error for RecvError

impl<T> Error for SendTimeoutError<T> where
    T: Send

impl Error for SelectTimeoutError

impl Error for TryRecvError

impl Error for InvalidBorrow

impl<T> Error for CapacityError<T> where
    T: Any
[src]

Requires features="std".

impl<E> Error for Err<E> where
    E: Debug

impl Error for UnsupportedError

impl Error for ImageError

impl Error for Error

impl Error for EncodingError

impl Error for ParameterError

impl Error for DecodingError

impl Error for LimitError

impl Error for DecodingError

impl Error for EncodingError

impl Error for Error[src]

impl Error for CookieParseError[src]

impl Error for DecodeError

impl Error for ParseError[src]

impl Error for ParseError[src]

impl Error for OutOfRangeError[src]

impl Error for ParseError[src]

impl Error for Error

impl<E> Error for Compat<E> where
    E: Debug + Display

impl Error for TryFromIntToCharError

impl Error for TryFromIntError

impl Error for Error[src]

impl Error for Error

impl Error for Error

impl Error for CaseFoldError

impl Error for Error

impl Error for Error

impl Error for UnicodeWordError

impl Error for ParseError[src]

impl<T> Error for SendError<T> where
    T: Any
[src]

impl<T, E> Error for SendError<T, E> where
    E: Any,
    T: Any
[src]

impl<E> Error for SharedError<E> where
    E: Error
[src]

impl<T> Error for SendError<T> where
    T: Any
[src]

impl Error for Canceled[src]

impl<T> Error for ReuniteError<T> where
    T: Any
[src]

impl<T> Error for TrySendError<T> where
    T: Any
[src]

impl Error for Error[src]

impl Error for InvalidStatusCode[src]

impl Error for InvalidMethod[src]

impl Error for InvalidHeaderName[src]

impl Error for InvalidHeaderValueBytes[src]

impl Error for InvalidUriParts[src]

impl Error for InvalidHeaderValue[src]

impl Error for InvalidHeaderNameBytes[src]

impl Error for InvalidUriBytes[src]

impl Error for ToStrError[src]

impl Error for InvalidUri[src]

impl Error for InvalidNameError[src]

impl Error for Error[src]

impl Error for Error[src]

impl Error for CollectVecError[src]

impl Error for CollectBytesError[src]

impl Error for Error[src]

impl Error for RunTimeoutError[src]

impl<T> Error for BlockError<T> where
    T: Debug
[src]

impl Error for TurnError[src]

impl Error for RunError[src]

impl Error for SpawnError[src]

impl Error for EnterError[src]

impl Error for SetFallbackError[src]

impl Error for TryRecvError[src]

impl<T> Error for UnboundedTrySendError<T> where
    T: Debug
[src]

impl Error for AcquireError[src]

impl Error for RecvError[src]

impl Error for UnboundedRecvError[src]

impl Error for SendError[src]

impl<T> Error for SendError<T> where
    T: Debug
[src]

impl Error for TryAcquireError[src]

impl Error for RecvError[src]

impl<T> Error for TrySendError<T> where
    T: Debug
[src]

impl Error for RecvError[src]

impl Error for UnboundedSendError[src]

impl Error for ParkError[src]

impl Error for BlockingError[src]

impl Error for Error[src]

impl<T> Error for ThrottleError<T> where
    T: 'static + Error
[src]

impl<T> Error for Error<T> where
    T: Error
[src]

impl<S> Error for HandshakeError<S> where
    S: Any + Debug
[src]

impl Error for Error[src]

impl Error for Error[src]

impl Error for X509VerifyResult[src]

impl Error for Error[src]

impl<S> Error for HandshakeError<S> where
    S: Debug
[src]

impl Error for ErrorStack[src]

impl Error for DecompressError[src]

impl Error for CompressError[src]

impl Error for FromStrError[src]

impl Error for Error

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

👎 Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

The lower-level cause of this error, in the case of a Utf8 error.

impl Error for Error[src]

impl Error for BytesError[src]

impl Error for ParseError[src]

impl Error for WeightedError[src]

impl Error for TimerError[src]

impl Error for Error[src]

impl Error for Error

impl<T> Error for SendError<T> where
    T: Any

impl<T> Error for TrySendError<T> where
    T: Any

impl Error for ReadError[src]

impl Error for WeightedError[src]

impl Error for BernoulliError[src]

impl Error for Error[src]

impl Error for Error[src]

impl Error for InvalidOutputSize

impl Error for Error[src]

impl Error for ScanError

impl Error for InitError[src]

impl Error for ParseError[src]

impl Error for RoundingError[src]

Loading content...

Implementors

impl Error for ServerError[src]

Loading content...