Skip to content

Commit 125fa5b

Browse files
authored
Merge pull request #680 from k-nasa/no_std
Some modules support no_std
2 parents 39f2c6d + 3e24e0b commit 125fa5b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+236
-178
lines changed

Diff for: .github/workflows/ci.yml

+19
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ jobs:
4040
with:
4141
command: check
4242
args: --features unstable --all --bins --examples --tests
43+
4344
- name: check bench
4445
uses: actions-rs/cargo@v1
4546
if: matrix.rust == 'nightly'
@@ -71,6 +72,24 @@ jobs:
7172
command: test
7273
args: --doc --features "unstable attributes"
7374

75+
build__with_no_std:
76+
name: Build with no-std
77+
runs-on: ubuntu-latest
78+
79+
steps:
80+
- uses: actions/checkout@master
81+
82+
- name: setup
83+
run: |
84+
rustup default nightly
85+
rustup target add thumbv7m-none-eabi
86+
87+
- name: check no_std
88+
uses: actions-rs/cargo@v1
89+
with:
90+
command: check
91+
args: --no-default-features --features alloc --target thumbv7m-none-eabi -Z avoid-dev-deps
92+
7493
check_fmt_and_docs:
7594
name: Checking fmt and docs
7695
runs-on: ubuntu-latest

Diff for: Cargo.toml

+7-3
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,19 @@ docs = ["attributes", "unstable", "default"]
3838
unstable = ["std", "broadcaster", "futures-timer"]
3939
attributes = ["async-attributes"]
4040
std = [
41+
"alloc",
4142
"crossbeam-utils",
42-
"futures-core",
43+
"futures-core/std",
4344
"futures-io",
4445
"memchr",
4546
"once_cell",
46-
"pin-project-lite",
4747
"pin-utils",
4848
"slab",
4949
]
50+
alloc = [
51+
"futures-core/alloc",
52+
"pin-project-lite",
53+
]
5054

5155
[dependencies]
5256
async-attributes = { version = "1.1.1", optional = true }
@@ -55,7 +59,7 @@ broadcaster = { version = "1.0.0", optional = true }
5559
crossbeam-channel = { version = "0.4.0", optional = true }
5660
crossbeam-deque = { version = "0.7.2", optional = true }
5761
crossbeam-utils = { version = "0.7.0", optional = true }
58-
futures-core = { version = "0.3.1", optional = true }
62+
futures-core = { version = "0.3.1", optional = true, default-features = false }
5963
futures-io = { version = "0.3.1", optional = true }
6064
futures-timer = { version = "2.0.2", optional = true }
6165
kv-log-macro = { version = "1.0.4", optional = true }

Diff for: src/future/future/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ cfg_unstable_default! {
2121
}
2222

2323
extension_trait! {
24-
use std::pin::Pin;
25-
use std::ops::{Deref, DerefMut};
24+
use core::pin::Pin;
25+
use core::ops::{Deref, DerefMut};
2626

2727
use crate::task::{Context, Poll};
2828

@@ -136,7 +136,7 @@ extension_trait! {
136136
137137
[`Future`]: ../future/trait.Future.html
138138
"#]
139-
pub trait FutureExt: std::future::Future {
139+
pub trait FutureExt: core::future::Future {
140140
/// Returns a Future that delays execution for a specified time.
141141
///
142142
/// # Examples

Diff for: src/future/mod.rs

+13-8
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,20 @@
4646
//! [`Future::race`]: trait.Future.html#method.race
4747
//! [`Future::try_race`]: trait.Future.html#method.try_race
4848
49-
pub use future::Future;
50-
pub use pending::pending;
51-
pub use poll_fn::poll_fn;
52-
pub use ready::ready;
49+
cfg_alloc! {
50+
pub use future::Future;
51+
pub(crate) mod future;
52+
}
53+
54+
cfg_std! {
55+
pub use pending::pending;
56+
pub use poll_fn::poll_fn;
57+
pub use ready::ready;
5358

54-
pub(crate) mod future;
55-
mod pending;
56-
mod poll_fn;
57-
mod ready;
59+
mod pending;
60+
mod poll_fn;
61+
mod ready;
62+
}
5863

5964
cfg_default! {
6065
pub use timeout::{timeout, TimeoutError};

Diff for: src/lib.rs

+9-3
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@
221221
//! features = ["std"]
222222
//! ```
223223
224+
#![cfg_attr(not(feature = "std"), no_std)]
224225
#![cfg_attr(feature = "docs", feature(doc_cfg))]
225226
#![warn(missing_docs, missing_debug_implementations, rust_2018_idioms)]
226227
#![allow(clippy::mutex_atomic, clippy::module_inception)]
@@ -229,6 +230,8 @@
229230
#![doc(html_logo_url = "https://async.rs/images/logo--hero.svg")]
230231
#![recursion_limit = "2048"]
231232

233+
extern crate alloc;
234+
232235
#[macro_use]
233236
mod utils;
234237

@@ -240,14 +243,17 @@ pub use async_attributes::{main, test};
240243
#[cfg(feature = "std")]
241244
mod macros;
242245

243-
cfg_std! {
246+
cfg_alloc! {
247+
pub mod task;
244248
pub mod future;
249+
pub mod stream;
250+
}
251+
252+
cfg_std! {
245253
pub mod io;
246254
pub mod os;
247255
pub mod prelude;
248-
pub mod stream;
249256
pub mod sync;
250-
pub mod task;
251257
}
252258

253259
cfg_default! {

Diff for: src/stream/double_ended_stream/next_back.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::pin::Pin;
2-
use std::future::Future;
1+
use core::pin::Pin;
2+
use core::future::Future;
33

44
use crate::stream::DoubleEndedStream;
55
use crate::task::{Context, Poll};

Diff for: src/stream/double_ended_stream/nth_back.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::future::Future;
2-
use std::pin::Pin;
3-
use std::task::{Context, Poll};
1+
use core::future::Future;
2+
use core::pin::Pin;
3+
use core::task::{Context, Poll};
44

55
use crate::stream::DoubleEndedStream;
66

Diff for: src/stream/double_ended_stream/rfind.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::task::{Context, Poll};
2-
use std::future::Future;
3-
use std::pin::Pin;
1+
use core::task::{Context, Poll};
2+
use core::future::Future;
3+
use core::pin::Pin;
44

55
use crate::stream::DoubleEndedStream;
66

Diff for: src/stream/double_ended_stream/rfold.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::future::Future;
2-
use std::pin::Pin;
3-
use std::task::{Context, Poll};
1+
use core::future::Future;
2+
use core::pin::Pin;
3+
use core::task::{Context, Poll};
44

55
use pin_project_lite::pin_project;
66

Diff for: src/stream/double_ended_stream/try_rfold.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::future::Future;
2-
use std::pin::Pin;
2+
use core::pin::Pin;
33
use crate::task::{Context, Poll};
44

55
use pin_project_lite::pin_project;

Diff for: src/stream/empty.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::marker::PhantomData;
2-
use std::pin::Pin;
1+
use core::marker::PhantomData;
2+
use core::pin::Pin;
33

44
use crate::stream::Stream;
55
use crate::task::{Context, Poll};

Diff for: src/stream/extend.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
2+
use core::future::Future;
23

3-
use crate::prelude::*;
44
use crate::stream::IntoStream;
55

66
/// Extends a collection with the contents of a stream.

Diff for: src/stream/from_fn.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use crate::stream::Stream;
44
use crate::task::{Context, Poll};

Diff for: src/stream/from_iter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use pin_project_lite::pin_project;
44

Diff for: src/stream/from_stream.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::future::Future;
2-
use std::pin::Pin;
1+
use core::future::Future;
2+
use core::pin::Pin;
33

44
use crate::stream::IntoStream;
55

Diff for: src/stream/interval.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ use std::pin::Pin;
22
use std::task::{Context, Poll};
33
use std::time::{Duration, Instant};
44

5+
use crate::future::Future;
6+
use crate::stream::Stream;
57
use futures_timer::Delay;
68

7-
use crate::prelude::*;
8-
99
/// Creates a new stream that yields at a set interval.
1010
///
1111
/// The stream first yields after `dur`, and continues to yield every

Diff for: src/stream/once.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use pin_project_lite::pin_project;
44

Diff for: src/stream/pending.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::marker::PhantomData;
2-
use std::pin::Pin;
3-
use std::task::{Context, Poll};
1+
use core::marker::PhantomData;
2+
use core::pin::Pin;
3+
use core::task::{Context, Poll};
44

55
use crate::stream::{DoubleEndedStream, ExactSizeStream, FusedStream, Stream};
66

Diff for: src/stream/product.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::pin::Pin;
2-
use std::future::Future;
1+
use core::pin::Pin;
2+
use core::future::Future;
33

44
use crate::stream::Stream;
55

Diff for: src/stream/repeat.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use crate::stream::Stream;
44
use crate::task::{Context, Poll};

Diff for: src/stream/repeat_with.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use crate::stream::Stream;
44
use crate::task::{Context, Poll};

Diff for: src/stream/stream/all.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::marker::PhantomData;
2-
use std::pin::Pin;
3-
use std::future::Future;
1+
use core::marker::PhantomData;
2+
use core::pin::Pin;
3+
use core::future::Future;
44

55
use crate::stream::Stream;
66
use crate::task::{Context, Poll};

Diff for: src/stream/stream/any.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::marker::PhantomData;
2-
use std::pin::Pin;
3-
use std::future::Future;
1+
use core::marker::PhantomData;
2+
use core::pin::Pin;
3+
use core::future::Future;
44

55
use crate::stream::Stream;
66
use crate::task::{Context, Poll};

Diff for: src/stream/stream/chain.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use pin_project_lite::pin_project;
44

55
use super::fuse::Fuse;
6-
use crate::prelude::*;
6+
use crate::stream::stream::StreamExt;
7+
use crate::stream::Stream;
78
use crate::task::{Context, Poll};
89

910
pin_project! {

Diff for: src/stream/stream/cloned.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::stream::Stream;
22
use crate::task::{Context, Poll};
33
use pin_project_lite::pin_project;
4-
use std::pin::Pin;
4+
use core::pin::Pin;
55

66
pin_project! {
77
/// A stream that clones the elements of an underlying stream.

Diff for: src/stream/stream/cmp.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
use std::cmp::Ordering;
2-
use std::pin::Pin;
3-
use std::future::Future;
1+
use core::cmp::Ordering;
2+
use core::future::Future;
3+
use core::pin::Pin;
44

55
use pin_project_lite::pin_project;
66

77
use super::fuse::Fuse;
8-
use crate::prelude::*;
8+
use crate::stream::stream::StreamExt;
99
use crate::stream::Stream;
1010
use crate::task::{Context, Poll};
1111

Diff for: src/stream/stream/copied.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::stream::Stream;
22
use crate::task::{Context, Poll};
33
use pin_project_lite::pin_project;
4-
use std::pin::Pin;
4+
use core::pin::Pin;
55

66
pin_project! {
77
/// A stream that copies the elements of an underlying stream.

Diff for: src/stream/stream/count.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::future::Future;
2-
use std::pin::Pin;
1+
use core::future::Future;
2+
use core::pin::Pin;
33

44
use pin_project_lite::pin_project;
55

Diff for: src/stream/stream/cycle.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
use std::mem::ManuallyDrop;
2-
use std::pin::Pin;
1+
use core::mem::ManuallyDrop;
2+
use core::pin::Pin;
33

44
use crate::stream::Stream;
55
use crate::task::{Context, Poll};

Diff for: src/stream/stream/delay.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use std::future::Future;
2-
use std::pin::Pin;
3-
use std::time::Duration;
1+
use core::future::Future;
2+
use core::pin::Pin;
3+
use core::time::Duration;
44

55
use pin_project_lite::pin_project;
66

Diff for: src/stream/stream/enumerate.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::pin::Pin;
1+
use core::pin::Pin;
22

33
use pin_project_lite::pin_project;
44

Diff for: src/stream/stream/eq.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use std::pin::Pin;
2-
use std::future::Future;
1+
use core::future::Future;
2+
use core::pin::Pin;
33

44
use pin_project_lite::pin_project;
55

66
use super::fuse::Fuse;
7-
use crate::prelude::*;
7+
use crate::stream::stream::StreamExt;
88
use crate::stream::Stream;
99
use crate::task::{Context, Poll};
1010

0 commit comments

Comments
 (0)