[][src]Function runng::result::flatten_result

pub fn flatten_result<T, E, F>(result: Result<Result<T, E>, F>) -> Result<T, E> where
    E: From<F>, 

Flattens nested results. Primary use case is with channels:

use futures::channel::oneshot;
use futures_util::future::FutureExt; // for map()

// Wrapper to explicity show the types
fn flatten<T>(input: T) -> impl futures::Future<Output = runng::Result<runng::msg::NngMsg>>
where
    T: futures::Future<Output = Result<runng::Result<runng::msg::NngMsg>, oneshot::Canceled>>,
{
    input.map(runng::flatten_result)
}

let (_, receiver) = oneshot::channel();
let receiver = flatten(receiver);