From fec556587acb5da1dc758b54c7a2a0db5ca254e1 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Fri, 19 Jul 2024 16:55:02 -0300 Subject: [PATCH] checking if one can mess with the order of .map_err() and .and_then() --- andthenchaintest/Cargo.lock | 7 +++++++ andthenchaintest/Cargo.toml | 6 ++++++ andthenchaintest/src/main.rs | 10 ++++++++++ 3 files changed, 23 insertions(+) create mode 100644 andthenchaintest/Cargo.lock create mode 100644 andthenchaintest/Cargo.toml create mode 100644 andthenchaintest/src/main.rs diff --git a/andthenchaintest/Cargo.lock b/andthenchaintest/Cargo.lock new file mode 100644 index 0000000..5faf678 --- /dev/null +++ b/andthenchaintest/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "andthenchaintest" +version = "0.1.0" diff --git a/andthenchaintest/Cargo.toml b/andthenchaintest/Cargo.toml new file mode 100644 index 0000000..ea4358f --- /dev/null +++ b/andthenchaintest/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "andthenchaintest" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/andthenchaintest/src/main.rs b/andthenchaintest/src/main.rs new file mode 100644 index 0000000..2d17f0b --- /dev/null +++ b/andthenchaintest/src/main.rs @@ -0,0 +1,10 @@ +fn main() { + let value: Result = Err(20) + .map_err(|_: u32| 30) + .and_then(|_old: u32| Err(40)); + + // Note: Order does not affect these results; even if `.map_err()` comes before `.and_then()`, + // when `.and_then()` returns an error, it is captured by `.map_err()` again. + + println!("{:?}", value); +}