Skip to main content

miden_node_utils/
lib.rs

1// Required by code generated by the upstream `#[instrument]` macro.
2extern crate miden_node_tracing as tracing;
3
4pub mod block_cache;
5pub mod clap;
6pub mod cors;
7#[cfg(feature = "testing")]
8pub mod fee;
9pub mod formatting;
10pub mod fs;
11pub mod genesis;
12pub mod grpc;
13pub mod limiter;
14pub mod lru_cache;
15pub mod retry;
16pub mod shutdown;
17pub mod tasks;
18
19/// Extends nested results types, allowing them to be flattened.
20///
21/// Adapted from: <https://stackoverflow.com/a/77543839>
22pub trait FlattenResult<V, OuterError, InnerError>
23where
24    InnerError: Into<OuterError>,
25{
26    fn flatten_result(self) -> Result<V, OuterError>;
27}
28
29impl<V, OuterError, InnerError> FlattenResult<V, OuterError, InnerError>
30    for Result<Result<V, InnerError>, OuterError>
31where
32    OuterError: From<InnerError>,
33{
34    fn flatten_result(self) -> Result<V, OuterError> {
35        match self {
36            Ok(Ok(value)) => Ok(value),
37            Ok(Err(inner)) => Err(inner.into()),
38            Err(outer) => Err(outer),
39        }
40    }
41}