Skip to content

Commit

Permalink
Merge pull request #7 from flub/stable-async-std
Browse files Browse the repository at this point in the history
Support stable async-std
  • Loading branch information
yoshuawuyts authored Feb 5, 2021
2 parents d9cef9b + e9b426d commit 7e42721
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 23 deletions.
1 change: 0 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,3 @@ jobs:
uses: actions-rs/cargo@v1
with:
command: test
args: --features unstable
9 changes: 3 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "stop-token"
version = "0.1.2"
version = "0.2.0"
authors = ["Aleksey Kladov <[email protected]>"]
edition = "2018"
license = "MIT OR Apache-2.0"
Expand All @@ -9,8 +9,5 @@ repository = "https://github.com/async-rs/stop-token"
description = "Experimental cooperative cancellation for async-std"

[dependencies]
pin-project-lite = "0.1.0"
async-std = "1.0"

[features]
unstable = ["async-std/unstable"]
pin-project-lite = "0.2.0"
async-std = "1.8"
5 changes: 3 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ use std::pin::Pin;
use std::task::{Context, Poll};

use async_std::prelude::*;
use async_std::sync::{channel, Receiver, Sender};

use async_std::channel::{self, Receiver, Sender};
use pin_project_lite::pin_project;

enum Never {}
Expand Down Expand Up @@ -101,7 +102,7 @@ pub struct StopToken {

impl Default for StopSource {
fn default() -> StopSource {
let (sender, receiver) = channel::<Never>(1);
let (sender, receiver) = channel::bounded::<Never>(1);

StopSource {
_chan: sender,
Expand Down
32 changes: 18 additions & 14 deletions tests/tests.rs
Original file line number Diff line number Diff line change
@@ -1,36 +1,40 @@
use std::time::Duration;

use async_std::{prelude::*, task, sync::channel};
use async_std::prelude::*;

use async_std::channel;
use async_std::task;

use stop_token::StopSource;

#[test]
fn smoke() {
task::block_on(async {
let (sender, receiver) = channel::<i32>(10);
let (sender, receiver) = channel::bounded::<i32>(10);
let stop_source = StopSource::new();
let task = task::spawn({
let stop_token = stop_source.stop_token();
let receiver = receiver.clone();
async move {
let mut xs = Vec::new();
let mut stream = stop_token.stop_stream(receiver);
while let Some(x) = stream.next().await {
xs.push(x)
let mut xs = Vec::new();
let mut stream = stop_token.stop_stream(receiver);
while let Some(x) = stream.next().await {
xs.push(x)
}
xs
}
xs
}});
sender.send(1).await;
sender.send(2).await;
sender.send(3).await;
});
sender.send(1).await.unwrap();
sender.send(2).await.unwrap();
sender.send(3).await.unwrap();

task::sleep(Duration::from_millis(250)).await;
drop(stop_source);
task::sleep(Duration::from_millis(250)).await;

sender.send(4).await;
sender.send(5).await;
sender.send(6).await;
sender.send(4).await.unwrap();
sender.send(5).await.unwrap();
sender.send(6).await.unwrap();
assert_eq!(task.await, vec![1, 2, 3]);
})
}

0 comments on commit 7e42721

Please sign in to comment.