diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-02-12 00:30:47 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-02-12 00:30:47 +0000 |
| commit | e728a32672d9cb108d73ba017a6a153dbc6c2d15 (patch) | |
| tree | 25cdf290d138929ebf0ff292fc6934e0a266400a /examples/nrf/src/bin/uart_split.rs | |
| parent | d708be7fe5e8fec8f2feea269fcb6964b6c73dcb (diff) | |
| parent | 1904906b363d2bbe32e95546f53201a3179dcb60 (diff) | |
Merge #613
613: Rust stable support r=Dirbaio a=Dirbaio
This PR adds (limited) stable Rust support!
The drawbacks are:
- No `#[embassy::task]`, `#[embassy::main]`. (requires `type_alias_impl_trait`). You have to manually allocate the tasks somewhere they'll live forever. See [example](https://github.com/embassy-rs/embassy/blob/master/examples/nrf/src/bin/raw_spawn.rs)
- No async trait impls (requires GATs). Note that the full API surface of HALs is still available through inherent methods: #552 #581
- Some stuff is not constructible in const (requires `const_fn_trait_bound`), although there's an (ugly) workaround for the generic `Mutex`.
So it's not that bad in the end, it's fully usable for shipping production-ready firmwares. We'll still recommend nightly as the default, until GATs and `type_alias_impl_trait` are stable.
Co-authored-by: Dario Nieuwenhuis <[email protected]>
Diffstat (limited to 'examples/nrf/src/bin/uart_split.rs')
| -rw-r--r-- | examples/nrf/src/bin/uart_split.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/examples/nrf/src/bin/uart_split.rs b/examples/nrf/src/bin/uart_split.rs index 750798378..19d438c40 100644 --- a/examples/nrf/src/bin/uart_split.rs +++ b/examples/nrf/src/bin/uart_split.rs | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | mod example_common; | 6 | mod example_common; |
| 7 | use example_common::*; | 7 | use example_common::*; |
| 8 | 8 | ||
| 9 | use embassy::blocking_mutex::kind::Noop; | 9 | use embassy::blocking_mutex::raw::NoopRawMutex; |
| 10 | use embassy::channel::mpsc::{self, Channel, Sender}; | 10 | use embassy::channel::mpsc::{self, Channel, Sender}; |
| 11 | use embassy::executor::Spawner; | 11 | use embassy::executor::Spawner; |
| 12 | use embassy::util::Forever; | 12 | use embassy::util::Forever; |
| @@ -14,7 +14,7 @@ use embassy_nrf::peripherals::UARTE0; | |||
| 14 | use embassy_nrf::uarte::UarteRx; | 14 | use embassy_nrf::uarte::UarteRx; |
| 15 | use embassy_nrf::{interrupt, uarte, Peripherals}; | 15 | use embassy_nrf::{interrupt, uarte, Peripherals}; |
| 16 | 16 | ||
| 17 | static CHANNEL: Forever<Channel<Noop, [u8; 8], 1>> = Forever::new(); | 17 | static CHANNEL: Forever<Channel<NoopRawMutex, [u8; 8], 1>> = Forever::new(); |
| 18 | 18 | ||
| 19 | #[embassy::main] | 19 | #[embassy::main] |
| 20 | async fn main(spawner: Spawner, p: Peripherals) { | 20 | async fn main(spawner: Spawner, p: Peripherals) { |
| @@ -56,7 +56,7 @@ async fn main(spawner: Spawner, p: Peripherals) { | |||
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | #[embassy::task] | 58 | #[embassy::task] |
| 59 | async fn reader(mut rx: UarteRx<'static, UARTE0>, s: Sender<'static, Noop, [u8; 8], 1>) { | 59 | async fn reader(mut rx: UarteRx<'static, UARTE0>, s: Sender<'static, NoopRawMutex, [u8; 8], 1>) { |
| 60 | let mut buf = [0; 8]; | 60 | let mut buf = [0; 8]; |
| 61 | loop { | 61 | loop { |
| 62 | info!("reading..."); | 62 | info!("reading..."); |
