Struct bevy_internal::tasks::futures_lite::io::Error
1.0.0 · source · pub struct Error { /* private fields */ }
Expand description
Implementations§
source§impl Error
impl Error
sourcepub fn new<E>(kind: ErrorKind, error: E) -> Error
pub fn new<E>(kind: ErrorKind, error: E) -> Error
Creates a new I/O error from a known kind of error as well as an arbitrary error payload.
This function is used to generically create I/O errors which do not
originate from the OS itself. The error
argument is an arbitrary
payload which will be contained in this Error
.
Note that this function allocates memory on the heap.
If no extra payload is required, use the From
conversion from
ErrorKind
.
Examples
use std::io::{Error, ErrorKind};
// errors can be created from strings
let custom_error = Error::new(ErrorKind::Other, "oh no!");
// errors can also be created from other errors
let custom_error2 = Error::new(ErrorKind::Interrupted, custom_error);
// creating an error without payload (and without memory allocation)
let eof_error = Error::from(ErrorKind::UnexpectedEof);
1.74.0 · sourcepub fn other<E>(error: E) -> Error
pub fn other<E>(error: E) -> Error
Creates a new I/O error from an arbitrary error payload.
This function is used to generically create I/O errors which do not
originate from the OS itself. It is a shortcut for Error::new
with ErrorKind::Other
.
Examples
use std::io::Error;
// errors can be created from strings
let custom_error = Error::other("oh no!");
// errors can also be created from other errors
let custom_error2 = Error::other(custom_error);
sourcepub fn last_os_error() -> Error
pub fn last_os_error() -> Error
Returns an error representing the last OS error which occurred.
This function reads the value of errno
for the target platform (e.g.
GetLastError
on Windows) and will return a corresponding instance of
Error
for the error code.
This should be called immediately after a call to a platform function, otherwise the state of the error value is indeterminate. In particular, other standard library functions may call platform functions that may (or may not) reset the error value even if they succeed.
Examples
use std::io::Error;
let os_error = Error::last_os_error();
println!("last OS error: {os_error:?}");
sourcepub fn from_raw_os_error(code: i32) -> Error
pub fn from_raw_os_error(code: i32) -> Error
Creates a new instance of an Error
from a particular OS error code.
Examples
On Linux:
use std::io;
let error = io::Error::from_raw_os_error(22);
assert_eq!(error.kind(), io::ErrorKind::InvalidInput);
On Windows:
use std::io;
let error = io::Error::from_raw_os_error(10022);
assert_eq!(error.kind(), io::ErrorKind::InvalidInput);
sourcepub fn raw_os_error(&self) -> Option<i32>
pub fn raw_os_error(&self) -> Option<i32>
Returns the OS error that this error represents (if any).
If this Error
was constructed via last_os_error
or
from_raw_os_error
, then this function will return Some
, otherwise
it will return None
.
Examples
use std::io::{Error, ErrorKind};
fn print_os_error(err: &Error) {
if let Some(raw_os_err) = err.raw_os_error() {
println!("raw OS error: {raw_os_err:?}");
} else {
println!("Not an OS error");
}
}
fn main() {
// Will print "raw OS error: ...".
print_os_error(&Error::last_os_error());
// Will print "Not an OS error".
print_os_error(&Error::new(ErrorKind::Other, "oh no!"));
}
1.3.0 · sourcepub fn get_ref(&self) -> Option<&(dyn Error + Send + Sync + 'static)>
pub fn get_ref(&self) -> Option<&(dyn Error + Send + Sync + 'static)>
Returns a reference to the inner error wrapped by this error (if any).
If this Error
was constructed via new
then this function will
return Some
, otherwise it will return None
.
Examples
use std::io::{Error, ErrorKind};
fn print_error(err: &Error) {
if let Some(inner_err) = err.get_ref() {
println!("Inner error: {inner_err:?}");
} else {
println!("No inner error");
}
}
fn main() {
// Will print "No inner error".
print_error(&Error::last_os_error());
// Will print "Inner error: ...".
print_error(&Error::new(ErrorKind::Other, "oh no!"));
}
1.3.0 · sourcepub fn get_mut(&mut self) -> Option<&mut (dyn Error + Send + Sync + 'static)>
pub fn get_mut(&mut self) -> Option<&mut (dyn Error + Send + Sync + 'static)>
Returns a mutable reference to the inner error wrapped by this error (if any).
If this Error
was constructed via new
then this function will
return Some
, otherwise it will return None
.
Examples
use std::io::{Error, ErrorKind};
use std::{error, fmt};
use std::fmt::Display;
#[derive(Debug)]
struct MyError {
v: String,
}
impl MyError {
fn new() -> MyError {
MyError {
v: "oh no!".to_string()
}
}
fn change_message(&mut self, new_message: &str) {
self.v = new_message.to_string();
}
}
impl error::Error for MyError {}
impl Display for MyError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "MyError: {}", &self.v)
}
}
fn change_error(mut err: Error) -> Error {
if let Some(inner_err) = err.get_mut() {
inner_err.downcast_mut::<MyError>().unwrap().change_message("I've been changed!");
}
err
}
fn print_error(err: &Error) {
if let Some(inner_err) = err.get_ref() {
println!("Inner error: {inner_err}");
} else {
println!("No inner error");
}
}
fn main() {
// Will print "No inner error".
print_error(&change_error(Error::last_os_error()));
// Will print "Inner error: ...".
print_error(&change_error(Error::new(ErrorKind::Other, MyError::new())));
}
1.3.0 · sourcepub fn into_inner(self) -> Option<Box<dyn Error + Send + Sync>>
pub fn into_inner(self) -> Option<Box<dyn Error + Send + Sync>>
Consumes the Error
, returning its inner error (if any).
If this Error
was constructed via new
then this function will
return Some
, otherwise it will return None
.
Examples
use std::io::{Error, ErrorKind};
fn print_error(err: Error) {
if let Some(inner_err) = err.into_inner() {
println!("Inner error: {inner_err}");
} else {
println!("No inner error");
}
}
fn main() {
// Will print "No inner error".
print_error(Error::last_os_error());
// Will print "Inner error: ...".
print_error(Error::new(ErrorKind::Other, "oh no!"));
}
sourcepub fn downcast<E>(self) -> Result<Box<E>, Error>
🔬This is a nightly-only experimental API. (io_error_downcast
)
pub fn downcast<E>(self) -> Result<Box<E>, Error>
io_error_downcast
)Attempt to downgrade the inner error to E
if any.
If this Error
was constructed via new
then this function will
attempt to perform downgrade on it, otherwise it will return Err
.
If downgrade succeeds, it will return Ok
, otherwise it will also
return Err
.
Examples
#![feature(io_error_downcast)]
use std::fmt;
use std::io;
use std::error::Error;
#[derive(Debug)]
enum E {
Io(io::Error),
SomeOtherVariant,
}
impl fmt::Display for E {
// ...
}
impl Error for E {}
impl From<io::Error> for E {
fn from(err: io::Error) -> E {
err.downcast::<E>()
.map(|b| *b)
.unwrap_or_else(E::Io)
}
}
sourcepub fn kind(&self) -> ErrorKind
pub fn kind(&self) -> ErrorKind
Returns the corresponding ErrorKind
for this error.
This may be a value set by Rust code constructing custom io::Error
s,
or if this io::Error
was sourced from the operating system,
it will be a value inferred from the system’s error encoding.
See last_os_error
for more details.
Examples
use std::io::{Error, ErrorKind};
fn print_error(err: Error) {
println!("{:?}", err.kind());
}
fn main() {
// As no error has (visibly) occurred, this may print anything!
// It likely prints a placeholder for unidentified (non-)errors.
print_error(Error::last_os_error());
// Will print "AddrInUse".
print_error(Error::new(ErrorKind::AddrInUse, "oh no!"));
}
Trait Implementations§
source§impl Error for Error
impl Error for Error
source§fn description(&self) -> &str
fn description(&self) -> &str
source§fn cause(&self) -> Option<&dyn Error>
fn cause(&self) -> Option<&dyn Error>
source§impl From<CompressError> for Error
impl From<CompressError> for Error
source§fn from(data: CompressError) -> Error
fn from(data: CompressError) -> Error
source§impl From<DecodingError> for Error
impl From<DecodingError> for Error
source§fn from(err: DecodingError) -> Error
fn from(err: DecodingError) -> Error
source§impl From<DecompressError> for Error
impl From<DecompressError> for Error
source§fn from(data: DecompressError) -> Error
fn from(data: DecompressError) -> Error
source§impl From<EncodingError> for Error
impl From<EncodingError> for Error
source§fn from(err: EncodingError) -> Error
fn from(err: EncodingError) -> Error
source§impl From<Error> for AssetReaderError
impl From<Error> for AssetReaderError
source§fn from(value: Error) -> AssetReaderError
fn from(value: Error) -> AssetReaderError
source§impl From<Error> for AssetWriterError
impl From<Error> for AssetWriterError
source§fn from(source: Error) -> AssetWriterError
fn from(source: Error) -> AssetWriterError
source§impl From<Error> for BlockHeaderReadError
impl From<Error> for BlockHeaderReadError
source§fn from(original: Error) -> BlockHeaderReadError
fn from(original: Error) -> BlockHeaderReadError
source§impl From<Error> for ConnectError
impl From<Error> for ConnectError
source§fn from(err: Error) -> ConnectError
fn from(err: Error) -> ConnectError
source§impl From<Error> for ConnectionError
impl From<Error> for ConnectionError
source§fn from(err: Error) -> ConnectionError
fn from(err: Error) -> ConnectionError
source§impl From<Error> for CreateBufferError
impl From<Error> for CreateBufferError
source§fn from(source: Error) -> CreateBufferError
fn from(source: Error) -> CreateBufferError
source§impl From<Error> for CreatePoolError
impl From<Error> for CreatePoolError
source§fn from(source: Error) -> CreatePoolError
fn from(source: Error) -> CreatePoolError
source§impl From<Error> for DecodingError
impl From<Error> for DecodingError
source§fn from(err: Error) -> DecodingError
fn from(err: Error) -> DecodingError
source§impl From<Error> for DecompressBlockError
impl From<Error> for DecompressBlockError
source§fn from(original: Error) -> DecompressBlockError
fn from(original: Error) -> DecompressBlockError
source§impl From<Error> for EncodingError
impl From<Error> for EncodingError
source§fn from(err: Error) -> EncodingError
fn from(err: Error) -> EncodingError
source§impl From<Error> for Error
impl From<Error> for Error
source§fn from(j: Error) -> Error
fn from(j: Error) -> Error
Convert a serde_json::Error
into an io::Error
.
JSON syntax and data errors are turned into InvalidData
I/O errors.
EOF errors are turned into UnexpectedEof
I/O errors.
use std::io;
enum MyError {
Io(io::Error),
Json(serde_json::Error),
}
impl From<serde_json::Error> for MyError {
fn from(err: serde_json::Error) -> MyError {
use serde_json::error::Category;
match err.classify() {
Category::Io => {
MyError::Io(err.into())
}
Category::Syntax | Category::Data | Category::Eof => {
MyError::Json(err)
}
}
}
}
source§impl From<Error> for FontLoaderError
impl From<Error> for FontLoaderError
source§fn from(source: Error) -> FontLoaderError
fn from(source: Error) -> FontLoaderError
source§impl From<Error> for HdrTextureLoaderError
impl From<Error> for HdrTextureLoaderError
source§fn from(source: Error) -> HdrTextureLoaderError
fn from(source: Error) -> HdrTextureLoaderError
source§impl From<Error> for HeaderReadError
impl From<Error> for HeaderReadError
source§fn from(err: Error) -> HeaderReadError
fn from(err: Error) -> HeaderReadError
source§impl From<Error> for ImageError
impl From<Error> for ImageError
source§fn from(err: Error) -> ImageError
fn from(err: Error) -> ImageError
source§impl From<Error> for ImageLoaderError
impl From<Error> for ImageLoaderError
source§fn from(source: Error) -> ImageLoaderError
fn from(source: Error) -> ImageLoaderError
source§impl From<Error> for OggReadError
impl From<Error> for OggReadError
source§fn from(err: Error) -> OggReadError
fn from(err: Error) -> OggReadError
source§impl From<Error> for ReadLogError
impl From<Error> for ReadLogError
source§fn from(source: Error) -> ReadLogError
fn from(source: Error) -> ReadLogError
source§impl From<Error> for ReplyError
impl From<Error> for ReplyError
source§fn from(err: Error) -> ReplyError
fn from(err: Error) -> ReplyError
source§impl From<Error> for SceneLoaderError
impl From<Error> for SceneLoaderError
source§fn from(source: Error) -> SceneLoaderError
fn from(source: Error) -> SceneLoaderError
source§impl From<Error> for ShaderLoaderError
impl From<Error> for ShaderLoaderError
source§fn from(source: Error) -> ShaderLoaderError
fn from(source: Error) -> ShaderLoaderError
source§impl From<Error> for SpannedError
impl From<Error> for SpannedError
source§fn from(e: Error) -> SpannedError
fn from(e: Error) -> SpannedError
source§impl From<Error> for WaylandError
impl From<Error> for WaylandError
source§fn from(err: Error) -> WaylandError
fn from(err: Error) -> WaylandError
1.14.0 · source§impl From<ErrorKind> for Error
impl From<ErrorKind> for Error
Intended for use for errors not exposed to the user, where allocating onto the heap (for normal construction via Error::new) is too costly.
source§impl<W> From<IntoInnerError<W>> for Error
impl<W> From<IntoInnerError<W>> for Error
source§fn from(iie: IntoInnerError<W>) -> Error
fn from(iie: IntoInnerError<W>) -> Error
Auto Trait Implementations§
impl !RefUnwindSafe for Error
impl Send for Error
impl Sync for Error
impl Unpin for Error
impl !UnwindSafe for Error
Blanket Implementations§
source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<Image>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.