macro_rules! uio_error {
($err:expr, $($args:tt)+) => { ... };
}Expand description
Shorthand to construct UIoError-instances.
This macro serves as a convenience call to quickly construct instances of
UIoError. It takes:
- An instance of
std::io::Error - A
format!-compatible string and - An arbitrary number of arguments to the format string
In exactly this order. It is equivalent to the more verbose code seen in the example.
§Examples
use uucore::error::UIoError;
use uucore::uio_error;
let io_err = std::io::Error::new(
std::io::ErrorKind::PermissionDenied, "fix me please!"
);
let uio_err = UIoError::new(
io_err.kind(),
format!("Error code: {}", 2)
);
let other_uio_err = uio_error!(io_err, "Error code: {}", 2);
// prints "fix me please!: Permission denied"
println!("{uio_err}");
// prints "Error code: 2: Permission denied"
println!("{other_uio_err}");The std::fmt::Display impl of UIoError will then ensure that an
appropriate error message relating to the actual error kind of the
std::io::Error is appended to whatever error message is defined in
addition (as secondary argument).
If you want to show only the error message for the std::io::ErrorKind
that’s contained in UIoError, pass the second argument as empty string:
use uucore::error::UIoError;
use uucore::uio_error;
let io_err = std::io::Error::new(
std::io::ErrorKind::PermissionDenied, "fix me please!"
);
let other_uio_err = uio_error!(io_err, "");
// prints: ": Permission denied"
println!("{other_uio_err}");