forked from mirror/async-std
commit
8ea920c9f0
4 changed files with 16 additions and 17 deletions
|
@ -45,16 +45,14 @@ where
|
||||||
let mut left = this.left;
|
let mut left = this.left;
|
||||||
let mut right = this.right;
|
let mut right = this.right;
|
||||||
|
|
||||||
if Future::poll(Pin::new(&mut left), cx).is_ready() {
|
let is_left_ready = Future::poll(Pin::new(&mut left), cx).is_ready();
|
||||||
if right.as_ref().output().is_some() {
|
if is_left_ready && right.as_ref().output().is_some() {
|
||||||
return Poll::Ready((left.take().unwrap(), right.take().unwrap()));
|
return Poll::Ready((left.take().unwrap(), right.take().unwrap()));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if Future::poll(Pin::new(&mut right), cx).is_ready() {
|
let is_right_ready = Future::poll(Pin::new(&mut right), cx).is_ready();
|
||||||
if left.as_ref().output().is_some() {
|
if is_right_ready && left.as_ref().output().is_some() {
|
||||||
return Poll::Ready((left.take().unwrap(), right.take().unwrap()));
|
return Poll::Ready((left.take().unwrap(), right.take().unwrap()));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Poll::Pending
|
Poll::Pending
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use std::pin::Pin;
|
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
use std::pin::Pin;
|
||||||
|
|
||||||
use pin_project_lite::pin_project;
|
use pin_project_lite::pin_project;
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
|
use pin_project_lite::pin_project;
|
||||||
|
use std::default::Default;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::default::Default;
|
|
||||||
use pin_project_lite::pin_project;
|
|
||||||
|
|
||||||
use crate::stream::Stream;
|
use crate::stream::Stream;
|
||||||
use crate::task::{Context, Poll};
|
use crate::task::{Context, Poll};
|
||||||
|
|
||||||
pin_project! {
|
pin_project! {
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
#[allow(missing_debug_implementations)]
|
|
||||||
#[cfg(all(feature = "default", feature = "unstable"))]
|
#[cfg(all(feature = "default", feature = "unstable"))]
|
||||||
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
|
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
|
||||||
pub struct PartitionFuture<S, F, B> {
|
pub struct PartitionFuture<S, F, B> {
|
||||||
|
@ -46,10 +45,12 @@ where
|
||||||
match next {
|
match next {
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
let res = this.res.as_mut().unwrap();
|
let res = this.res.as_mut().unwrap();
|
||||||
match (this.f)(&v) {
|
|
||||||
true => res.0.extend(Some(v)),
|
if (this.f)(&v) {
|
||||||
false => res.1.extend(Some(v)),
|
res.0.extend(Some(v))
|
||||||
};
|
} else {
|
||||||
|
res.1.extend(Some(v))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => return Poll::Ready(this.res.take().unwrap()),
|
None => return Poll::Ready(this.res.take().unwrap()),
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ static POOL: Lazy<Pool> = Lazy::new(|| {
|
||||||
.name("async-std/executor".to_string())
|
.name("async-std/executor".to_string())
|
||||||
.spawn(|| {
|
.spawn(|| {
|
||||||
let _ = PROCESSOR.with(|p| p.set(proc));
|
let _ = PROCESSOR.with(|p| p.set(proc));
|
||||||
abort_on_panic(|| main_loop());
|
abort_on_panic(main_loop);
|
||||||
})
|
})
|
||||||
.expect("cannot start a thread driving tasks");
|
.expect("cannot start a thread driving tasks");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue