Diffstat (limited to 'src/effect/blocking.rs')
| -rw-r--r-- | src/effect/blocking.rs | 101 |
1 files changed, 50 insertions, 51 deletions
diff --git a/src/effect/blocking.rs b/src/effect/blocking.rs index b95e643..1400c9d 100644 --- a/src/effect/blocking.rs +++ b/src/effect/blocking.rs @@ -67,19 +67,19 @@ impl<'lt, U: Ss + 'lt, B: BlockOn> Effective<'lt> for Value<U, B> { fn r#do< 'ctx: 'lt, 'wrap, - Pre: Ss, - Ctx: Ss, - Owned: Ss, - First: Ss, - FirstOutput: Ss, - FirstPost: Ss, - Done: Ss, - Extra: Ss, - Repeat: Ss, - RepeatOutput: Ss, - RepeatPost: Ss, - Post: Ss, - Return: Ss, + Pre, + Ctx, + Owned, + First, + FirstOutput, + FirstPost, + Done, + Extra, + Repeat, + RepeatOutput, + RepeatPost, + Post, + Return, >( self, pre: Pre, @@ -90,19 +90,24 @@ impl<'lt, U: Ss + 'lt, B: BlockOn> Effective<'lt> for Value<U, B> { post: Post, ) -> ErasedEffective<'wrap, Return, Self::Effect> where - Pre: FnOnce(Self::Output) -> (Ctx, ControlFlow<Done, Owned>), - First: for<'b> FnOnce( - &'b mut Ctx, - Owned, - ) -> ErasedEffective<'b, FirstOutput, Self::Effect, &'wrap ()>, - FirstPost: for<'b> FnOnce(&'b mut Ctx, FirstOutput) -> ControlFlow<Done, Extra>, - Repeat: for<'b> FnMut( - &'b mut Ctx, - &'b mut Extra, - ) - -> ErasedEffective<'b, RepeatOutput, Self::Effect, &'wrap ()>, - RepeatPost: for<'b> FnMut(&'b mut Ctx, &'b mut Extra, RepeatOutput) -> ControlFlow<Done>, - Post: FnOnce(Ctx, Option<Extra>, Done) -> Return, + Pre: Ss + FnOnce(Self::Output) -> (Ctx, ControlFlow<Done, Owned>), + First: Ss + + for<'b> FnOnce( + &'b mut Ctx, + Owned, + ) -> ErasedEffective<'b, FirstOutput, Self::Effect, &'wrap ()>, + FirstPost: Ss + for<'b> FnOnce(&'b mut Ctx, FirstOutput) -> ControlFlow<Done, Extra>, + Repeat: Ss + + for<'b> FnMut( + &'b mut Ctx, + &'b mut Extra, + ) -> ErasedEffective<'b, RepeatOutput, Self::Effect, &'wrap ()>, + RepeatPost: + Ss + for<'b> FnMut(&'b mut Ctx, &'b mut Extra, RepeatOutput) -> ControlFlow<Done>, + Post: Ss + FnOnce(Ctx, Option<Extra>, Done) -> Return, + Return: Ss, + FirstOutput: Ss, + RepeatOutput: Ss, 'lt: 'wrap, { let (ctx, done, extra) = match pre(self.0) { @@ -148,10 +153,10 @@ impl<B: BlockOn> Join for Blocking<B> { T1: Effective<'a, Effect = Self::Effect>, T2: Effective<'a, Effect = Self::Effect>; - fn two<'a, T0: Ss + 'a, T1: Ss + 'a>(cb: (T0, T1)) -> Self::Two<'a, T0, T1> + fn two<'a, T0, T1>(cb: (T0, T1)) -> Self::Two<'a, T0, T1> where - T0: Effective<'a, Effect = Self::Effect>, - T1: Effective<'a, Effect = Self::Effect>, + T0: Ss + 'a + Effective<'a, Effect = Self::Effect>, + T1: Ss + 'a + Effective<'a, Effect = Self::Effect>, { let v0 = cb.0.cast::<()>().0; let v1 = cb.1.cast::<()>().0; @@ -159,13 +164,11 @@ impl<B: BlockOn> Join for Blocking<B> { Value((v0, v1), Default::default()) } - fn three<'a, T0: Ss + 'a, T1: Ss + 'a, T2: Ss + 'a>( - cb: (T0, T1, T2), - ) -> Self::Three<'a, T0, T1, T2> + fn three<'a, T0, T1, T2>(cb: (T0, T1, T2)) -> Self::Three<'a, T0, T1, T2> where - T0: Effective<'a, Effect = Self::Effect>, - T1: Effective<'a, Effect = Self::Effect>, - T2: Effective<'a, Effect = Self::Effect>, + T0: Ss + 'a + Effective<'a, Effect = Self::Effect>, + T1: Ss + 'a + Effective<'a, Effect = Self::Effect>, + T2: Ss + 'a + Effective<'a, Effect = Self::Effect>, { let v0 = cb.0.cast::<()>().0; let v1 = cb.1.cast::<()>().0; @@ -189,14 +192,12 @@ impl<B: BlockOn> TryJoin for Blocking<B> { T1: TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, T2: TryEffective<'a, Err = T0::Err, Effect = Self::Effect>; - fn two<'a, T0: Ss + 'a, T1: Ss + 'a, F0: Ss + 'a, F1: Ss + 'a>( - cb: (F0, F1), - ) -> Self::Two<'a, T0, T1> + fn two<'a, T0, T1, F0, F1>(cb: (F0, F1)) -> Self::Two<'a, T0, T1> where - T0: TryEffective<'a, Effect = Self::Effect>, - T1: TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, - F0: FnOnce() -> T0, - F1: FnOnce() -> T1, + T0: Ss + 'a + TryEffective<'a, Effect = Self::Effect>, + T1: Ss + 'a + TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, + F0: Ss + 'a + FnOnce() -> T0, + F1: Ss + 'a + FnOnce() -> T1, { let v0 = match (cb.0)().cast::<()>().0 { Ok(v) => v, @@ -211,16 +212,14 @@ impl<B: BlockOn> TryJoin for Blocking<B> { Value(Ok((v0, v1)), Default::default()) } - fn three<'a, T0: Ss + 'a, T1: Ss + 'a, T2: Ss + 'a, F0: Ss + 'a, F1: Ss + 'a, F2: Ss + 'a>( - cb: (F0, F1, F2), - ) -> Self::Three<'a, T0, T1, T2> + fn three<'a, T0, T1, T2, F0, F1, F2>(cb: (F0, F1, F2)) -> Self::Three<'a, T0, T1, T2> where - T0: TryEffective<'a, Effect = Self::Effect>, - T1: TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, - T2: TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, - F0: FnOnce() -> T0, - F1: FnOnce() -> T1, - F2: FnOnce() -> T2, + T0: Ss + 'a + TryEffective<'a, Effect = Self::Effect>, + T1: Ss + 'a + TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, + T2: Ss + 'a + TryEffective<'a, Err = T0::Err, Effect = Self::Effect>, + F0: Ss + 'a + FnOnce() -> T0, + F1: Ss + 'a + FnOnce() -> T1, + F2: Ss + 'a + FnOnce() -> T2, { let v0 = match (cb.0)().cast::<()>().0 { Ok(v) => v, |