From f4e2302e7ea388978c9c502a4f1af03ec4c4d0af Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Tue, 1 Oct 2019 18:08:39 +0300 Subject: [PATCH] Don't use Try trait, use Result instead --- src/lib.rs | 1 - src/stream/stream/mod.rs | 8 +++----- src/stream/stream/try_for_each.rs | 14 ++++++-------- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index c75673a1..f188a682 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -47,7 +47,6 @@ #![doc(test(attr(allow(unused_extern_crates, unused_variables))))] #![doc(html_logo_url = "https://async.rs/images/logo--hero.svg")] #![recursion_limit = "1024"] -#![feature(try_trait)] use cfg_if::cfg_if; diff --git a/src/stream/stream/mod.rs b/src/stream/stream/mod.rs index bdd964c1..4234d768 100644 --- a/src/stream/stream/mod.rs +++ b/src/stream/stream/mod.rs @@ -68,7 +68,6 @@ pub use zip::Zip; use std::cmp::Ordering; use std::marker::PhantomData; -use std::ops::Try; use cfg_if::cfg_if; @@ -958,14 +957,13 @@ extension_trait! { # }) } ``` "#] - fn try_for_each( + fn try_for_each( self, f: F, - ) -> impl Future [TryForEeachFuture] + ) -> impl Future [TryForEeachFuture] where Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try, + F: FnMut(Self::Item) -> Result<(), E>, { TryForEeachFuture::new(self, f) } diff --git a/src/stream/stream/try_for_each.rs b/src/stream/stream/try_for_each.rs index 02136e87..ae3d5ea5 100644 --- a/src/stream/stream/try_for_each.rs +++ b/src/stream/stream/try_for_each.rs @@ -1,5 +1,4 @@ use std::marker::PhantomData; -use std::ops::Try; use std::pin::Pin; use crate::future::Future; @@ -29,25 +28,24 @@ impl TryForEeachFuture { } } -impl Future for TryForEeachFuture +impl Future for TryForEeachFuture where S: Stream, S::Item: std::fmt::Debug, - F: FnMut(S::Item) -> R, - R: Try, + F: FnMut(S::Item) -> Result<(), E>, { - type Output = R; + type Output = Result<(), E>; fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { loop { let item = futures_core::ready!(self.as_mut().stream().poll_next(cx)); match item { - None => return Poll::Ready(R::from_ok(())), + None => return Poll::Ready(Ok(())), Some(v) => { let res = (self.as_mut().f())(v); - if let Err(e) = res.into_result() { - return Poll::Ready(R::from_error(e)); + if let Err(e) = res { + return Poll::Ready(Err(e)); } } }