Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/irrustible/futures-micro
To futures-lite as futures-lite is to futures: smaller.
https://github.com/irrustible/futures-micro
Last synced: 7 days ago
JSON representation
To futures-lite as futures-lite is to futures: smaller.
- Host: GitHub
- URL: https://github.com/irrustible/futures-micro
- Owner: irrustible
- License: apache-2.0
- Created: 2020-08-07T06:53:13.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-03T10:58:59.000Z (7 months ago)
- Last Synced: 2024-10-31T11:27:18.194Z (16 days ago)
- Language: Rust
- Size: 40 KB
- Stars: 53
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# futures-micro
[![License](https://img.shields.io/crates/l/futures-micro.svg)](https://github.com/irrustible/futures-micro/blob/main/LICENSE)
[![Package](https://img.shields.io/crates/v/futures-micro.svg)](https://crates.io/crates/futures-micro)
[![Documentation](https://docs.rs/futures-micro/badge.svg)](https://docs.rs/futures-micro)To futures-lite as futures-lite is to futures: smaller.
Features:
* Fun tools to write everything as async fns.
* Tiny, with a single dependency.
* 100% `no_std` support, no heap allocation required!
* Complete stable compiler support - Uses no nightly features!* Bootstrap tools:
* `poll_fn` - wrap a function into a future.
* `pin!()` - pin a value to the stack.
* Futures interface subversion (poll interface from async fns):
* `waker()` to get the current waker.
* `sleep()` to wait until you are woken.
* Common stuff:
* `yield_once()` - lets some other futures do some work .
* `or()` - return the result of the first future to complete.
* `or!()` - `or()`, but varargs.
* `zip()` - return the result of both futures when they both complete.
* `zip!()` - `zip()`, but varargs.
* `ready!()` - unwraps a ready value or returns pending.## Status
Beta? The API we have here seems pretty reasonable now.
If there's something you're missing, you may be looking for
[futures-lite](https://github.com/smol-rs/futures-lite).## Missing/Removed APIs
There are many APIs you will *not* find in this crate. Some are absent to keep the crate small and quick to compile, others used to be here but have since been removed. These are:
* `pending()` - never completes, now in libcore as `core::future::pending()`
* `ready()` - completes on first poll, now in libcore as `core::future::ready()`
* `poll_state` - wrap a function and some state into a future.
```rust
/// outdated
poll_state(INITIAL, |state, ctx| {...}).await/// replacement (NOTE: `*state` should be replaced by `state`)
let mut state = INITIAL;
poll_fn(move |ctx| { ... }).await
```## Changelog
### 0.5.0 - 2021-03-13
* Switch to using `pin-project-lite` for pin projections, removing
most of the unsafe code.
* Removed `next_poll`. It wasn't very useful and our implementation
may not have been sound. This may explain why I can't find it in `futures-lite`.## Copyright and License
Copyright (c) 2020 James Laver, Matthieu le Brazidec, Stjepan Glavina, Alain Zscheile,
futures-micro contributors, futures-lite contributors[Licensed](LICENSE) under Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0),
with LLVM Exceptions (https://spdx.org/licenses/LLVM-exception.html).Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
licensed as above, without any additional terms or conditions.