#hal #io

nightly no-std embedded-hal-async

An asynchronous Hardware Abstraction Layer (HAL) for embedded systems

8 releases ()

1.0.0-rc.1 Aug 15, 2023
0.2.0-alpha.2 Jul 4, 2023
0.2.0-alpha.1 Apr 5, 2023
0.2.0-alpha.0 Nov 23, 2022
0.1.0-alpha.0 Apr 19, 2022

#161 in Embedded development

Download history 2087/week @ 2023-06-04 1473/week @ 2023-06-11 2956/week @ 2023-06-18 2287/week @ 2023-06-25 2403/week @ 2023-07-02 2048/week @ 2023-07-09 2384/week @ 2023-07-16 2611/week @ 2023-07-23 1643/week @ 2023-07-30 1961/week @ 2023-08-06 2842/week @ 2023-08-13 2444/week @ 2023-08-20 2959/week @ 2023-08-27 2493/week @ 2023-09-03 2151/week @ 2023-09-10 3279/week @ 2023-09-17

11,106 downloads per month
Used in 40 crates (37 directly)


672 lines

crates.io crates.io Documentation


An asynchronous Hardware Abstraction Layer (HAL) for embedded systems.

This crate contains asynchronous versions of the embedded-hal traits and shares its scope and design goals.

This project is developed and maintained by the HAL team.

Serial/UART traits

There is no serial traits in embedded-hal-async. Instead, use embedded-io-async. A serial port is essentially a byte-oriented stream, and that's what embedded-io-async models. Sharing the traits with all byte streams has some advantages. For example, it allows generic code providing a command-line interface or a console to operate either on hardware serial ports or on virtual ones like Telnet or USB CDC-ACM.

Optional Cargo features

  • defmt-03: Derive defmt::Format from defmt 0.3 for enums and structs.

Minimum Supported Rust Version (MSRV)

This crate requires Rust nightly newer than nightly-2022-11-22, due to requiring support for async fn in traits (AFIT), which is not stable yet.

Keep in mind Rust nightlies can make backwards-incompatible changes to unstable features at any time. If this happens, we might do changes that increase the minimum required nightly version in any patch release.

When AFIT becomes stable, MSRV will be bumped to the Rust version that stabilizes it, after which point the standard MSRV bump policy will apply.


Licensed under either of

at your option.


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 dual licensed as above, without any additional terms or conditions.