Diffstat (limited to 'src/effect/blocking.rs')
-rw-r--r--src/effect/blocking.rs101
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,