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