Trait tor_hsservice::internal_prelude::StdError
1.0.0 · source · pub(crate) trait StdError: Debug + Display {
// Provided methods
fn source(&self) -> Option<&(dyn Error + 'static)> { ... }
fn description(&self) -> &str { ... }
fn cause(&self) -> Option<&dyn Error> { ... }
fn provide<'a>(&'a self, request: &mut Request<'a>) { ... }
}
Expand description
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. Error messages are typically concise lowercase sentences without
trailing punctuation:
let err = "NaN".parse::<u32>().unwrap_err();
assert_eq!(err.to_string(), "invalid digit found in string");
Errors may provide cause 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.
Provided Methods§
1.30.0 · sourcefn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any.
§Examples
use std::error::Error;
use std::fmt;
#[derive(Debug)]
struct SuperError {
source: 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.source)
}
}
#[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 { source: SuperErrorSideKick })
}
fn main() {
match get_super_error() {
Err(e) => {
println!("Error: {e}");
println!("Caused by: {}", e.source().unwrap());
}
_ => println!("No error"),
}
}
1.0.0 · sourcefn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
fn description(&self) -> &str
if let Err(e) = "xc".parse::<u32>() {
// Print `e` itself, no need for description().
eprintln!("Error: {e}");
}
fn cause(&self) -> Option<&dyn Error>
sourcefn provide<'a>(&'a self, request: &mut Request<'a>)
🔬This is a nightly-only experimental API. (error_generic_member_access
)
fn provide<'a>(&'a self, request: &mut Request<'a>)
error_generic_member_access
)Provides type based access to context intended for error reports.
Used in conjunction with Request::provide_value
and Request::provide_ref
to extract
references to member variables from dyn Error
trait objects.
§Example
#![feature(error_generic_member_access)]
#![feature(error_in_core)]
use core::fmt;
use core::error::{request_ref, Request};
#[derive(Debug)]
enum MyLittleTeaPot {
Empty,
}
#[derive(Debug)]
struct MyBacktrace {
// ...
}
impl MyBacktrace {
fn new() -> MyBacktrace {
// ...
}
}
#[derive(Debug)]
struct Error {
backtrace: MyBacktrace,
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "Example Error")
}
}
impl std::error::Error for Error {
fn provide<'a>(&'a self, request: &mut Request<'a>) {
request
.provide_ref::<MyBacktrace>(&self.backtrace);
}
}
fn main() {
let backtrace = MyBacktrace::new();
let error = Error { backtrace };
let dyn_error = &error as &dyn std::error::Error;
let backtrace_ref = request_ref::<MyBacktrace>(dyn_error).unwrap();
assert!(core::ptr::eq(&error.backtrace, backtrace_ref));
assert!(request_ref::<MyLittleTeaPot>(dyn_error).is_none());
}
Implementations§
source§impl dyn Error
impl dyn Error
1.3.0 · sourcepub fn is<T>(&self) -> boolwhere
T: Error + 'static,
pub fn is<T>(&self) -> boolwhere
T: Error + 'static,
Returns true
if the inner type is the same as T
.
1.3.0 · sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
Returns some reference to the inner value if it is of type T
, or
None
if it isn’t.
1.3.0 · sourcepub fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: Error + 'static,
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: Error + 'static,
Returns some mutable reference to the inner value if it is of type T
, or
None
if it isn’t.
source§impl dyn Error + Send
impl dyn Error + Send
1.3.0 · sourcepub fn is<T>(&self) -> boolwhere
T: Error + 'static,
pub fn is<T>(&self) -> boolwhere
T: Error + 'static,
Forwards to the method defined on the type dyn Error
.
1.3.0 · sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
Forwards to the method defined on the type dyn Error
.
1.3.0 · sourcepub fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: Error + 'static,
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: Error + 'static,
Forwards to the method defined on the type dyn Error
.
source§impl dyn Error + Sync + Send
impl dyn Error + Sync + Send
1.3.0 · sourcepub fn is<T>(&self) -> boolwhere
T: Error + 'static,
pub fn is<T>(&self) -> boolwhere
T: Error + 'static,
Forwards to the method defined on the type dyn Error
.
1.3.0 · sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
Forwards to the method defined on the type dyn Error
.
1.3.0 · sourcepub fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: Error + 'static,
pub fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: Error + 'static,
Forwards to the method defined on the type dyn Error
.
source§impl dyn Error
impl dyn Error
sourcepub fn sources(&self) -> Source<'_> ⓘ
🔬This is a nightly-only experimental API. (error_iter
)
pub fn sources(&self) -> Source<'_> ⓘ
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.sources();
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());
Trait Implementations§
source§impl AsRef<dyn Error> for UploadError
impl AsRef<dyn Error> for UploadError
§impl ErrorReport for dyn Error + Sync + Send
impl ErrorReport for dyn Error + Sync + Send
Implementation for anyhow::Error
, which derefs to dyn StdError
.
Implementors§
impl !Error for &str
impl Error for fs_mistrust::err::Error
impl Error for tor_chanmgr::err::Error
impl Error for ProxyError
impl Error for tor_circmgr::err::Error
impl Error for StreamIsolationBuilderError
impl Error for RequestError
impl Error for tor_geoip::err::Error
impl Error for BridgeParseError
impl Error for GuardMgrConfigError
impl Error for GuardMgrError
impl Error for PickGuardError
impl Error for VanguardMgrError
impl Error for ArtiPathSyntaxError
impl Error for tor_keymgr::err::Error
impl Error for KeystoreCorruptionError
impl Error for InvalidKeyPathComponentValue
impl Error for KeyPathError
impl Error for KeyMgrBuilderError
impl Error for InstallRuntimeError
impl Error for RelayLookupError
impl Error for tor_netdir::err::Error
impl Error for OnionDirLookupError
impl Error for ErrorSource
impl Error for BadSlug
impl Error for tor_protover::ParseError
impl Error for SleepError
impl Error for tor_socksproto::err::Error
impl Error for AuthorizedClientParseError
impl Error for DescEncryptionConfigBuilderError
impl Error for ClientError
impl Error for FatalError
impl Error for IptStoreError
impl Error for StartupError
impl Error for StateExpiryError
impl Error for IptError
impl Error for IptEstablisherError
impl Error for ChooseIptError
impl Error for CreateIptError
impl Error for AuthorizedClientConfigError
impl Error for UploadError
impl Error for EstablishSessionError
impl Error for IntroRequestError
impl Error for LogContentError
impl Error for ReplayError
impl Error for ConfigBuildError
impl Error for tor_hsservice::internal_prelude::DirClientError
impl Error for ReconfigureError
impl Error for Void
std
only.impl Error for Infallible
impl Error for VarError
impl Error for RecvTimeoutError
impl Error for std::sync::mpsc::TryRecvError
impl Error for TokioTpErr
impl Error for FromHexError
std
only.impl Error for DeserializerError
impl Error for SerializerError
impl Error for url::parser::ParseError
impl Error for xz2::stream::Error
impl Error for BernoulliError
std
only.impl Error for WeightedError
std
only.impl Error for !
impl Error for UnknownKeyTypeError
impl Error for tor_persist::err::Error
impl Error for tor_rtcompat::timer::TimeoutError
impl Error for StreamWasFull
impl Error for InvalidIptLocalId
impl Error for NetdirProviderShutdown
impl Error for InvalidNickname
impl Error for tor_hsservice::time_store::ParseError
impl Error for tor_hsservice::internal_prelude::fmt::Error
impl Error for Aborted
std
only.impl Error for UnorderedKeyError
impl Error for alloc::collections::TryReserveError
impl Error for FromVecWithNulError
impl Error for IntoStringError
impl Error for NulError
impl Error for FromUtf8Error
impl Error for FromUtf16Error
impl Error for LayoutError
impl Error for AllocError
impl Error for TryFromSliceError
impl Error for BorrowError
impl Error for BorrowMutError
impl Error for CharTryFromError
impl Error for ParseCharError
impl Error for DecodeUtf16Error
impl Error for TryFromCharError
impl Error for FromBytesUntilNulError
impl Error for FromBytesWithNulError
impl Error for core::net::parser::AddrParseError
impl Error for ParseFloatError
impl Error for core::num::error::ParseIntError
impl Error for core::num::error::TryFromIntError
impl Error for ParseBoolError
impl Error for Utf8Error
impl Error for TryFromFloatSecsError
impl Error for JoinPathsError
impl Error for StripPrefixError
impl Error for ExitStatusError
impl Error for std::sync::mpsc::RecvError
impl Error for std::thread::local::AccessError
impl Error for SystemTimeError
impl Error for async_executors::iface::timer::TimeoutError
impl Error for CompressError
impl Error for DecompressError
impl Error for getrandom::error::Error
impl Error for log::kv::error::Error
impl Error for log::ParseLevelError
std
only.impl Error for SetLoggerError
std
only.impl Error for native_tls::Error
impl Error for openssl::error::Error
impl Error for ErrorStack
impl Error for openssl::ssl::error::Error
impl Error for X509VerifyResult
impl Error for serde::de::value::Error
std
only.impl Error for serde_json::error::Error
impl Error for ReadError
impl Error for rand_core::error::Error
std
only.impl Error for tor_hsservice::internal_prelude::io::Error
impl Error for WriterPanicked
impl Error for tor_hsservice::internal_prelude::mpsc::SendError
impl Error for tor_hsservice::internal_prelude::mpsc::TryRecvError
impl Error for Canceled
std
only.impl Error for Bug
impl Error for RequestFailedError
impl Error for SpawnError
std
only.impl Error for ASN1DecodeErr
impl Error for ASN1EncodeErr
impl Error for AccessError
impl Error for AcquireError
impl Error for AddrParseError
std
only.impl Error for AsAsciiStrError
std
only.impl Error for BlindingError
impl Error for BridgeAddrError
impl Error for BuildError
std
only.impl Error for BuildError
std
only.impl Error for BuildError
std
only.impl Error for BuildError
std
only.impl Error for BuildError
std
only.impl Error for BuildError
impl Error for CacheError
std
only.impl Error for CaseFoldError
std
only.impl Error for CertEncodeError
impl Error for CertError
impl Error for CfgPathError
impl Error for ChanTargetDecodeError
impl Error for ComponentRange
std
only.impl Error for ConfigError
impl Error for ConfigResolveError
impl Error for ConversionRange
std
only.impl Error for DatetimeParseError
impl Error for DecodeError
std
only.impl Error for DecryptionError
impl Error for DeserializeError
std
only.impl Error for DifferentVariant
std
only.impl Error for EarlyDataError
std
only.impl Error for Ed25519CertConstructorError
impl Error for Elapsed
impl Error for EncodeError
std
only.impl Error for EncodeError
impl Error for EncryptError
std
only.impl Error for EnterError
impl Error for Errno
std
only.impl Error for Errno
std
only.impl Error for Error
impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
impl Error for Error
std
only.impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
impl Error for Error
std
only.impl Error for Error
impl Error for Error
impl Error for Error
std
only.impl Error for Error
std
only.impl Error for Error
std
only.impl Error for ErrorKind
std
only.impl Error for Errors
std
only.impl Error for EstablishIntroSigError
impl Error for FloatIsNan
std
only.impl Error for Format
std
only.impl Error for GroupInfoError
std
only.impl Error for HsDescError
impl Error for HsIdParseError
impl Error for IntroPointDescBuilderError
impl Error for InvalidBoolOrAuto
impl Error for InvalidBufferSize
std
only.impl Error for InvalidDnsNameError
std
only.impl Error for InvalidEncodingError
std
only.impl Error for InvalidFormatDescription
std
only.impl Error for InvalidHeaderName
impl Error for InvalidHeaderValue
impl Error for InvalidLength
std
only.impl Error for InvalidLengthError
std
only.impl Error for InvalidListen
impl Error for InvalidMethod
impl Error for InvalidOutputSize
std
only.impl Error for InvalidStatusCode
impl Error for InvalidUri
impl Error for InvalidUriParts
impl Error for InvalidVariant
std
only.impl Error for JoinError
impl Error for JsonCodecError
impl Error for LabelError
std
only.impl Error for ListenUnsupported
impl Error for MacError
std
only.impl Error for MatchError
std
only.impl Error for MatchError
std
only.impl Error for MaxSizeReached
impl Error for NonUtf8Error
impl Error for OtherError
std
only.impl Error for Parse
std
only.impl Error for ParseError
std
only.impl Error for ParseError
std
only.impl Error for ParseFromDescription
std
only.impl Error for ParseIntError
std
only.impl Error for ParseLevelError
std
only.impl Error for ParseLevelFilterError
std
only.impl Error for PatternIDError
std
only.impl Error for PatternIDError
std
only.impl Error for PatternSetInsertError
std
only.impl Error for PolicyError
impl Error for PopError
std
only.impl Error for PtTargetInvalidSetting
impl Error for RecvError
impl Error for RecvError
std
only.impl Error for RecvError
impl Error for RecvError
impl Error for RecvError
impl Error for RelayIdError
impl Error for ResolveError
impl Error for ReuniteError
impl Error for ReuniteError
impl Error for SerializeError
std
only.impl Error for SetGlobalDefaultError
std
only.impl Error for SmallIndexError
std
only.impl Error for SpecificationError
std
only.impl Error for StartError
std
only.impl Error for StateIDError
std
only.impl Error for StateIDError
std
only.impl Error for TimePeriodError
impl Error for TimeValidityError
impl Error for TimeoutError
impl Error for TimeoutError
impl Error for ToAsciiCharError
std
only.impl Error for ToStrError
impl Error for TomlError
impl Error for TooLargeBufferRequiredError
impl Error for TransportIdError
impl Error for Truncated
impl Error for TryAcquireError
impl Error for TryCurrentError
impl Error for TryFromIntError
std
only.impl Error for TryFromParsed
std
only.impl Error for TryLockError
impl Error for TryRecvError
impl Error for TryRecvError
std
only.impl Error for TryRecvError
impl Error for TryRecvError
impl Error for TryRecvError
impl Error for TryRecvError
impl Error for TryReserveError
std
only.impl Error for UnexpectedNullPointerError
impl Error for UnicodeWordBoundaryError
std
only.impl Error for UnicodeWordError
std
only.impl Error for UninitializedFieldError
std
only.impl Error for UnsupportedOperationError
std
only.impl Error for VerifierBuilderError
std
only.impl<'a, K, V> Error for alloc::collections::btree::map::entry::OccupiedError<'a, K, V>
impl<'a, K, V> Error for std::collections::hash::map::OccupiedError<'a, K, V>
impl<'a, T> Error for &'a T
impl<E> Error for BackoffError<E>
impl<E> Error for RetryError<E>
impl<E> Error for LookupError<E>where
E: Error + 'static,
impl<E> Error for MultilineListBuilderError<E>
impl<E> Error for ParseNotNanError<E>
std
only.impl<E> Error for SubfieldBuildError<E>where
E: Error,
std
only.impl<Enum> Error for TryFromPrimitiveError<Enum>where
Enum: TryFromPrimitive,
std
only.impl<I> Error for ExactlyOneError<I>
use_std
only.impl<I> Error for InputError<I>
std
only.impl<I, C> Error for TreeError<I, C>
std
only.impl<L, R> Error for Either<L, R>
use_std
only.Either
implements Error
if both L
and R
implement it.
Requires crate feature "use_std"
impl<O> Error for FromAsciiError<O>where
O: Any,
std
only.impl<R> Error for BitIdxError<R>where
R: BitRegister,
std
only.impl<S> Error for native_tls::HandshakeError<S>
impl<S> Error for openssl::ssl::error::HandshakeError<S>where
S: Debug,
impl<T> Error for std::sync::mpsc::TrySendError<T>
impl<T> Error for std::sync::poison::TryLockError<T>
impl<T> Error for Box<T>where
T: Error,
impl<T> Error for ThinBox<T>
impl<T> Error for std::sync::mpsc::SendError<T>
impl<T> Error for PoisonError<T>
impl<T> Error for CapacityError<T>where
T: Any,
std
only.Requires features="std"
.
impl<T> Error for tor_hsservice::internal_prelude::mpsc::TrySendError<T>where
T: Any,
impl<T> Error for Arc<T>
impl<T> Error for AsyncFdTryNewError<T>
impl<T> Error for BitPtrError<T>where
T: BitStore,
std
only.impl<T> Error for BitSpanError<T>where
T: BitStore,
std
only.impl<T> Error for ForcePushError<T>where
T: Debug,
std
only.impl<T> Error for MisalignError<T>
std
only.impl<T> Error for PollSendError<T>where
T: Debug,
impl<T> Error for PushError<T>where
T: Debug,
std
only.impl<T> Error for ReuniteError<T>where
T: Any,
std
only.impl<T> Error for SendError<T>
impl<T> Error for SendError<T>
std
only.impl<T> Error for SendError<T>
impl<T> Error for SendError<T>
impl<T> Error for SendError<T>where
T: Debug,
impl<T> Error for SendError<T>where
T: Debug,
impl<T> Error for SendTimeoutError<T>
time
only.impl<T> Error for SetError<T>where
T: Debug,
impl<T> Error for TrySendError<T>
impl<T> Error for TrySendError<T>
std
only.impl<T> Error for TrySendError<T>
impl<T> Error for TrySendError<T>where
T: Debug,
impl<T, E> Error for TryChunksError<T, E>
std
only.impl<T, E> Error for TryReadyChunksError<T, E>
std
only.impl<T, Item> Error for ReuniteError<T, Item>where
T: Any,
std
only.