Skip to content

Commit bb3829b

Browse files
switch to smol::Timer
1 parent e54537a commit bb3829b

File tree

9 files changed

+33
-35
lines changed

9 files changed

+33
-35
lines changed

Cargo.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ default = [
2727
"crossbeam-channel",
2828
"crossbeam-deque",
2929
"crossbeam-queue",
30-
"futures-timer",
3130
"kv-log-macro",
3231
"log",
3332
"mio",
@@ -37,7 +36,7 @@ default = [
3736
"smol",
3837
]
3938
docs = ["attributes", "unstable", "default"]
40-
unstable = ["std", "broadcaster", "futures-timer"]
39+
unstable = ["std", "broadcaster"]
4140
attributes = ["async-attributes"]
4241
std = [
4342
"alloc",
@@ -64,7 +63,6 @@ crossbeam-queue = { version = "0.2.0", optional = true }
6463
crossbeam-utils = { version = "0.7.2", optional = true }
6564
futures-core = { version = "0.3.4", optional = true, default-features = false }
6665
futures-io = { version = "0.3.4", optional = true }
67-
futures-timer = { version = "3.0.2", optional = true }
6866
kv-log-macro = { version = "1.0.4", optional = true }
6967
log = { version = "0.4.8", features = ["kv_unstable"], optional = true }
7068
memchr = { version = "2.3.3", optional = true }

src/future/future/delay.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use std::future::Future;
22
use std::pin::Pin;
33
use std::time::Duration;
44

5-
use futures_timer::Delay;
65
use pin_project_lite::pin_project;
6+
use smol::Timer;
77

88
use crate::task::{Context, Poll};
99

@@ -14,13 +14,13 @@ pin_project! {
1414
#[pin]
1515
future: F,
1616
#[pin]
17-
delay: Delay,
17+
delay: Timer,
1818
}
1919
}
2020

2121
impl<F> DelayFuture<F> {
2222
pub fn new(future: F, dur: Duration) -> DelayFuture<F> {
23-
let delay = Delay::new(dur);
23+
let delay = Timer::after(dur);
2424

2525
DelayFuture { future, delay }
2626
}

src/future/timeout.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use std::error::Error;
22
use std::fmt;
3+
use std::future::Future;
34
use std::pin::Pin;
45
use std::time::Duration;
5-
use std::future::Future;
66

7-
use futures_timer::Delay;
87
use pin_project_lite::pin_project;
8+
use smol::Timer;
99

1010
use crate::task::{Context, Poll};
1111

@@ -33,11 +33,7 @@ pub async fn timeout<F, T>(dur: Duration, f: F) -> Result<T, TimeoutError>
3333
where
3434
F: Future<Output = T>,
3535
{
36-
let f = TimeoutFuture {
37-
future: f,
38-
delay: Delay::new(dur),
39-
};
40-
f.await
36+
TimeoutFuture::new(f, dur).await
4137
}
4238

4339
pin_project! {
@@ -46,14 +42,17 @@ pin_project! {
4642
#[pin]
4743
future: F,
4844
#[pin]
49-
delay: Delay,
45+
delay: Timer,
5046
}
5147
}
5248

5349
impl<F> TimeoutFuture<F> {
5450
#[allow(dead_code)]
5551
pub(super) fn new(future: F, dur: Duration) -> TimeoutFuture<F> {
56-
TimeoutFuture { future: future, delay: Delay::new(dur) }
52+
TimeoutFuture {
53+
future,
54+
delay: Timer::after(dur),
55+
}
5756
}
5857
}
5958

src/io/timeout.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
use std::future::Future;
12
use std::pin::Pin;
23
use std::task::{Context, Poll};
34
use std::time::Duration;
4-
use std::future::Future;
55

6-
use futures_timer::Delay;
76
use pin_project_lite::pin_project;
7+
use smol::Timer;
88

99
use crate::io;
1010

@@ -37,7 +37,7 @@ where
3737
F: Future<Output = io::Result<T>>,
3838
{
3939
Timeout {
40-
timeout: Delay::new(dur),
40+
timeout: Timer::after(dur),
4141
future: f,
4242
}
4343
.await
@@ -53,7 +53,7 @@ pin_project! {
5353
#[pin]
5454
future: F,
5555
#[pin]
56-
timeout: Delay,
56+
timeout: Timer,
5757
}
5858
}
5959

src/os/unix/net/datagram.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,8 @@ impl AsRawFd for UnixDatagram {
319319

320320
impl FromRawFd for UnixDatagram {
321321
unsafe fn from_raw_fd(fd: RawFd) -> UnixDatagram {
322-
let datagram = std::os::unix::net::UnixDatagram::from_raw_fd(fd);
323-
datagram.into()
322+
let datagram = Async::<StdUnixDatagram>::from_raw_fd(fd);
323+
UnixDatagram { watcher: datagram }
324324
}
325325
}
326326

src/stream/interval.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
use std::future::Future;
12
use std::pin::Pin;
23
use std::task::{Context, Poll};
34
use std::time::Duration;
45

5-
use crate::future::Future;
66
use crate::stream::Stream;
7-
use futures_timer::Delay;
7+
use smol::Timer;
88

99
/// Creates a new stream that yields at a set interval.
1010
///
@@ -45,7 +45,7 @@ use futures_timer::Delay;
4545
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
4646
pub fn interval(dur: Duration) -> Interval {
4747
Interval {
48-
delay: Delay::new(dur),
48+
delay: Timer::after(dur),
4949
interval: dur,
5050
}
5151
}
@@ -60,7 +60,7 @@ pub fn interval(dur: Duration) -> Interval {
6060
#[cfg_attr(feature = "docs", doc(cfg(unstable)))]
6161
#[derive(Debug)]
6262
pub struct Interval {
63-
delay: Delay,
63+
delay: Timer,
6464
interval: Duration,
6565
}
6666

@@ -72,7 +72,7 @@ impl Stream for Interval {
7272
return Poll::Pending;
7373
}
7474
let interval = self.interval;
75-
self.delay.reset(interval);
75+
std::mem::replace(&mut self.delay, Timer::after(interval));
7676
Poll::Ready(Some(()))
7777
}
7878
}

src/stream/stream/delay.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use core::pin::Pin;
33
use core::time::Duration;
44

55
use pin_project_lite::pin_project;
6+
use smol::Timer;
67

78
use crate::stream::Stream;
89
use crate::task::{Context, Poll};
@@ -14,7 +15,7 @@ pin_project! {
1415
#[pin]
1516
stream: S,
1617
#[pin]
17-
delay: futures_timer::Delay,
18+
delay: Timer,
1819
delay_done: bool,
1920
}
2021
}
@@ -23,7 +24,7 @@ impl<S> Delay<S> {
2324
pub(super) fn new(stream: S, dur: Duration) -> Self {
2425
Delay {
2526
stream,
26-
delay: futures_timer::Delay::new(dur),
27+
delay: Timer::after(dur),
2728
delay_done: false,
2829
}
2930
}

src/stream/stream/throttle.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ use std::future::Future;
22
use std::pin::Pin;
33
use std::time::Duration;
44

5-
use futures_timer::Delay;
65
use pin_project_lite::pin_project;
6+
use smol::Timer;
77

88
use crate::stream::Stream;
99
use crate::task::{Context, Poll};
@@ -25,7 +25,7 @@ pin_project! {
2525
#[pin]
2626
blocked: bool,
2727
#[pin]
28-
delay: Delay,
28+
delay: Timer,
2929
}
3030
}
3131

@@ -35,7 +35,7 @@ impl<S: Stream> Throttle<S> {
3535
stream,
3636
duration,
3737
blocked: false,
38-
delay: Delay::new(Duration::default()),
38+
delay: Timer::after(Duration::default()),
3939
}
4040
}
4141
}
@@ -59,7 +59,7 @@ impl<S: Stream> Stream for Throttle<S> {
5959
Poll::Ready(None) => Poll::Ready(None),
6060
Poll::Ready(Some(v)) => {
6161
*this.blocked = true;
62-
this.delay.reset(*this.duration);
62+
std::mem::replace(&mut *this.delay, Timer::after(*this.duration));
6363
Poll::Ready(Some(v))
6464
}
6565
}

src/stream/stream/timeout.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use std::future::Future;
44
use std::pin::Pin;
55
use std::time::Duration;
66

7-
use futures_timer::Delay;
87
use pin_project_lite::pin_project;
8+
use smol::Timer;
99

1010
use crate::stream::Stream;
1111
use crate::task::{Context, Poll};
@@ -17,13 +17,13 @@ pin_project! {
1717
#[pin]
1818
stream: S,
1919
#[pin]
20-
delay: Delay,
20+
delay: Timer,
2121
}
2222
}
2323

2424
impl<S: Stream> Timeout<S> {
2525
pub(crate) fn new(stream: S, dur: Duration) -> Self {
26-
let delay = Delay::new(dur);
26+
let delay = Timer::after(dur);
2727

2828
Self { stream, delay }
2929
}

0 commit comments

Comments
 (0)