mirror of
https://github.com/haraldh/chainerror.git
synced 2025-05-29 21:18:07 +02:00
rename cherr()
to context()
This commit is contained in:
parent
2af5fb7ad6
commit
ed710fada3
25 changed files with 169 additions and 199 deletions
|
@ -11,14 +11,14 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
|
||||
fn func3() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(format!("Error reading '{}'", filename))?;
|
||||
do_some_io().context(format!("Error reading '{}'", filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> ChainResult<(), Func2Error> {
|
||||
func3().cherr(Func2Error(format!("func2 error: calling func3")))?;
|
||||
func3().context(Func2Error(format!("func2 error: calling func3")))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -43,9 +43,9 @@ impl ::std::fmt::Debug for Func1Error {
|
|||
}
|
||||
|
||||
fn func1() -> ChainResult<(), Func1Error> {
|
||||
func2().cherr(Func1Error::Func2)?;
|
||||
func2().context(Func1Error::Func2)?;
|
||||
let filename = String::from("bar.txt");
|
||||
do_some_io().cherr(Func1Error::IO(filename))?;
|
||||
do_some_io().context(Func1Error::IO(filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
|
@ -8,11 +8,11 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -33,9 +33,9 @@ impl ::std::fmt::Display for Func1ErrorKind {
|
|||
impl ::std::error::Error for Func1ErrorKind {}
|
||||
|
||||
fn func1() -> ChainResult<(), Func1ErrorKind> {
|
||||
func2().cherr(Func1ErrorKind::Func2)?;
|
||||
func2().context(Func1ErrorKind::Func2)?;
|
||||
let filename = String::from("bar.txt");
|
||||
do_some_io().cherr(Func1ErrorKind::IO(filename))?;
|
||||
do_some_io().context(Func1ErrorKind::IO(filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -53,6 +53,8 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
eprintln!("\nDebug Error:\n{:?}", e);
|
||||
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,9 @@ impl ::std::fmt::Debug for Func1ErrorKind {
|
|||
impl ::std::error::Error for Func1ErrorKind {}
|
||||
|
||||
fn func1() -> ChainResult<(), Func1ErrorKind> {
|
||||
func2().cherr(Func1ErrorKind::Func2)?;
|
||||
func2().context(Func1ErrorKind::Func2)?;
|
||||
let filename = String::from("bar.txt");
|
||||
do_some_io().cherr(Func1ErrorKind::IO(filename))?;
|
||||
do_some_io().context(Func1ErrorKind::IO(filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -59,6 +59,8 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
eprintln!("\nDebug Error:\n{:?}", e);
|
||||
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,9 @@ impl ::std::fmt::Debug for Func1ErrorKind {
|
|||
impl ::std::error::Error for Func1ErrorKind {}
|
||||
|
||||
fn func1() -> ChainResult<(), Func1ErrorKind> {
|
||||
func2().cherr(Func1ErrorKind::Func2)?;
|
||||
func2().context(Func1ErrorKind::Func2)?;
|
||||
let filename = String::from("bar.txt");
|
||||
do_some_io().cherr(Func1ErrorKind::IO(filename))?;
|
||||
do_some_io().context(Func1ErrorKind::IO(filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -70,6 +70,8 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
eprintln!("\nDebug Error:\n{:?}", e);
|
||||
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -7,11 +7,11 @@ pub mod mycrate {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> std::result::Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -35,9 +35,9 @@ pub mod mycrate {
|
|||
}
|
||||
|
||||
pub fn func1() -> Result<()> {
|
||||
func2().cherr(ErrorKind::Func2)?;
|
||||
func2().context(ErrorKind::Func2)?;
|
||||
let filename = String::from("bar.txt");
|
||||
do_some_io().cherr(ErrorKind::IO(filename))?;
|
||||
do_some_io().context(ErrorKind::IO(filename))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -72,6 +72,8 @@ fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
eprintln!("\nDebug Error:\n{:?}", e);
|
||||
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ pub mod mycrate {
|
|||
}
|
||||
}
|
||||
|
||||
macro_rules! mcherr {
|
||||
macro_rules! mcontext {
|
||||
( $k:expr ) => {{
|
||||
|e| {
|
||||
Error(
|
||||
|
@ -92,7 +92,7 @@ pub mod mycrate {
|
|||
|
||||
pub fn func2() -> std::result::Result<(), Error> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().map_err(mcherr!(ErrorKind::IO(format!(
|
||||
do_some_io().map_err(mcontext!(ErrorKind::IO(format!(
|
||||
"Error reading '{}'",
|
||||
filename
|
||||
))))?;
|
||||
|
@ -115,7 +115,7 @@ pub mod mycrate {
|
|||
}
|
||||
}
|
||||
|
||||
macro_rules! mcherr {
|
||||
macro_rules! mcontext {
|
||||
( $k:expr ) => {{
|
||||
|e| {
|
||||
Error(
|
||||
|
@ -175,9 +175,9 @@ pub mod mycrate {
|
|||
pub type Result<T> = std::result::Result<T, Error>;
|
||||
|
||||
pub fn func1() -> Result<()> {
|
||||
func2().map_err(mcherr!(ErrorKind::Func2))?;
|
||||
func2().map_err(mcontext!(ErrorKind::Func2))?;
|
||||
let filename = String::from("bar.txt");
|
||||
do_some_io().map_err(mcherr!(ErrorKind::IO(filename)))?;
|
||||
do_some_io().map_err(mcontext!(ErrorKind::IO(filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -212,6 +212,8 @@ fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
eprintln!("\nDebug Error:\n{:?}", e);
|
||||
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -8,11 +8,11 @@ pub mod mycrate {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> std::result::Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io(filename).cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io(filename).context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -85,15 +85,15 @@ pub mod mycrate {
|
|||
|
||||
let filename = "bar.txt";
|
||||
|
||||
do_some_io(filename).map_cherr(|e| ErrorKind::from_io_error(&e, filename.into()))?;
|
||||
do_some_io(filename).map_cherr(|_| ErrorKind::IO(filename.into()))?;
|
||||
do_some_io(filename).map_cherr(|e| ErrorKind::from(e))?;
|
||||
do_some_io(filename).map_context(|e| ErrorKind::from_io_error(&e, filename.into()))?;
|
||||
do_some_io(filename).map_context(|_| ErrorKind::IO(filename.into()))?;
|
||||
do_some_io(filename).map_context(|e| ErrorKind::from(e))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn super_func1() -> Result<()> {
|
||||
func1().map_cherr(|e| ErrorKind::from(e))?;
|
||||
func1().map_context(|e| ErrorKind::from(e))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -130,6 +130,8 @@ fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
eprintln!("\nDebug Error:\n{:?}", e);
|
||||
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -11,14 +11,14 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
if let Err(e) = do_some_io() {
|
||||
Err(e).cherr("func2 error")?;
|
||||
Err(e).context("func2 error")?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
if let Err(e) = func2() {
|
||||
Err(e).cherr("func1 error")?;
|
||||
Err(e).context("func1 error")?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -10,18 +10,19 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
}
|
||||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
do_some_io().cherr("func2 error")?;
|
||||
do_some_io().context("func2 error")?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
func2().cherr("func1 error")?;
|
||||
func2().context("func1 error")?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
if let Err(e) = func1() {
|
||||
eprintln!("{:?}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -10,18 +10,19 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(format!("Error reading '{}'", filename))?;
|
||||
do_some_io().context(format!("Error reading '{}'", filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
func2().cherr("func1 error")?;
|
||||
func2().context("func1 error")?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
if let Err(e) = func1() {
|
||||
eprintln!("{:?}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(format!("Error reading '{}'", filename))?;
|
||||
do_some_io().context(format!("Error reading '{}'", filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
if let Err(e) = func2() {
|
||||
if let Some(s) = e.source() {
|
||||
eprintln!("func2 failed because of '{}'", s);
|
||||
Err(e).cherr("func1 error")?;
|
||||
Err(e).context("func1 error")?;
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
@ -27,6 +27,7 @@ fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
if let Err(e) = func1() {
|
||||
eprintln!("{}", e);
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -10,12 +10,12 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(format!("Error reading '{}'", filename))?;
|
||||
do_some_io().context(format!("Error reading '{}'", filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
func2().cherr("func1 error")?;
|
||||
func2().context("func1 error")?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
}
|
||||
s = c;
|
||||
}
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -10,12 +10,12 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(format!("Error reading '{}'", filename))?;
|
||||
do_some_io().context(format!("Error reading '{}'", filename))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
func2().cherr(format!("func1 error"))?;
|
||||
func2().context(format!("func1 error"))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
eprintln!("The root cause was: std::io::Error: {:#?}", ioerror);
|
||||
}
|
||||
}
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -8,18 +8,18 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func1Error);
|
||||
derive_str_context!(Func1Error);
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
func2().cherr(Func1Error(format!("func1 error")))?;
|
||||
func2().context(Func1Error(format!("func1 error")))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
eprintln!("Debug Func2Error:\n{:?}", f2err);
|
||||
}
|
||||
}
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -8,21 +8,21 @@ fn do_some_io() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func2Error);
|
||||
derive_str_context!(Func2Error);
|
||||
|
||||
fn func2() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
let filename = "foo.txt";
|
||||
do_some_io().cherr(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func2Error(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
derive_str_cherr!(Func1ErrorFunc2);
|
||||
derive_str_cherr!(Func1ErrorIO);
|
||||
derive_str_context!(Func1ErrorFunc2);
|
||||
derive_str_context!(Func1ErrorIO);
|
||||
|
||||
fn func1() -> Result<(), Box<dyn Error + Send + Sync>> {
|
||||
func2().cherr(Func1ErrorFunc2(format!("func1 error calling func2")))?;
|
||||
func2().context(Func1ErrorFunc2(format!("func1 error calling func2")))?;
|
||||
let filename = "bar.txt";
|
||||
do_some_io().cherr(Func1ErrorIO(format!("Error reading '{}'", filename)))?;
|
||||
do_some_io().context(Func1ErrorIO(format!("Error reading '{}'", filename)))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@ fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|||
if let Some(s) = e.downcast_chain_ref::<Func1ErrorFunc2>() {
|
||||
eprintln!("Func1ErrorFunc2:\n{:?}", s);
|
||||
}
|
||||
std::process::exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue