From 8aec341f28a00012e1771d5c35d2647e11830755 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Wed, 9 Jul 2025 01:49:31 +0200 Subject: executor: return error when creating the spawntoken, not when spawning. --- examples/nrf52840/src/bin/channel.rs | 2 +- examples/nrf52840/src/bin/channel_sender_receiver.rs | 4 ++-- examples/nrf52840/src/bin/ethernet_enc28j60.rs | 2 +- examples/nrf52840/src/bin/executor_fairness_test.rs | 6 +++--- examples/nrf52840/src/bin/gpiote_port.rs | 8 ++++---- examples/nrf52840/src/bin/manually_create_executor.rs | 4 ++-- examples/nrf52840/src/bin/multiprio.rs | 6 +++--- examples/nrf52840/src/bin/mutex.rs | 2 +- examples/nrf52840/src/bin/pubsub.rs | 6 +++--- examples/nrf52840/src/bin/raw_spawn.rs | 4 ++-- examples/nrf52840/src/bin/self_spawn.rs | 4 ++-- examples/nrf52840/src/bin/self_spawn_current_executor.rs | 4 ++-- examples/nrf52840/src/bin/timer.rs | 4 ++-- examples/nrf52840/src/bin/uart_split.rs | 2 +- examples/nrf52840/src/bin/usb_ethernet.rs | 6 +++--- examples/nrf52840/src/bin/usb_serial_multitask.rs | 4 ++-- examples/nrf52840/src/bin/wifi_esp_hosted.rs | 4 ++-- 17 files changed, 36 insertions(+), 36 deletions(-) (limited to 'examples/nrf52840/src') diff --git a/examples/nrf52840/src/bin/channel.rs b/examples/nrf52840/src/bin/channel.rs index e06ba1c73..ffa539808 100644 --- a/examples/nrf52840/src/bin/channel.rs +++ b/examples/nrf52840/src/bin/channel.rs @@ -31,7 +31,7 @@ async fn main(spawner: Spawner) { let p = embassy_nrf::init(Default::default()); let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard); - unwrap!(spawner.spawn(my_task())); + spawner.spawn(unwrap!(my_task())); loop { match CHANNEL.receive().await { diff --git a/examples/nrf52840/src/bin/channel_sender_receiver.rs b/examples/nrf52840/src/bin/channel_sender_receiver.rs index 74c62ca20..09050db68 100644 --- a/examples/nrf52840/src/bin/channel_sender_receiver.rs +++ b/examples/nrf52840/src/bin/channel_sender_receiver.rs @@ -45,6 +45,6 @@ async fn main(spawner: Spawner) { let p = embassy_nrf::init(Default::default()); let channel = CHANNEL.init(Channel::new()); - unwrap!(spawner.spawn(send_task(channel.sender()))); - unwrap!(spawner.spawn(recv_task(p.P0_13.into(), channel.receiver()))); + spawner.spawn(unwrap!(send_task(channel.sender()))); + spawner.spawn(unwrap!(recv_task(p.P0_13.into(), channel.receiver()))); } diff --git a/examples/nrf52840/src/bin/ethernet_enc28j60.rs b/examples/nrf52840/src/bin/ethernet_enc28j60.rs index 0946492fe..3bb255a72 100644 --- a/examples/nrf52840/src/bin/ethernet_enc28j60.rs +++ b/examples/nrf52840/src/bin/ethernet_enc28j60.rs @@ -70,7 +70,7 @@ async fn main(spawner: Spawner) { static RESOURCES: StaticCell> = StaticCell::new(); let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); - unwrap!(spawner.spawn(net_task(runner))); + spawner.spawn(unwrap!(net_task(runner))); // And now we can use it! diff --git a/examples/nrf52840/src/bin/executor_fairness_test.rs b/examples/nrf52840/src/bin/executor_fairness_test.rs index df6e7af3f..70c9405f0 100644 --- a/examples/nrf52840/src/bin/executor_fairness_test.rs +++ b/examples/nrf52840/src/bin/executor_fairness_test.rs @@ -36,7 +36,7 @@ async fn run3() { #[embassy_executor::main] async fn main(spawner: Spawner) { let _p = embassy_nrf::init(Default::default()); - unwrap!(spawner.spawn(run1())); - unwrap!(spawner.spawn(run2())); - unwrap!(spawner.spawn(run3())); + spawner.spawn(unwrap!(run1())); + spawner.spawn(unwrap!(run2())); + spawner.spawn(unwrap!(run3())); } diff --git a/examples/nrf52840/src/bin/gpiote_port.rs b/examples/nrf52840/src/bin/gpiote_port.rs index 0dddb1a97..66dbd32dc 100644 --- a/examples/nrf52840/src/bin/gpiote_port.rs +++ b/examples/nrf52840/src/bin/gpiote_port.rs @@ -26,8 +26,8 @@ async fn main(spawner: Spawner) { let btn3 = Input::new(p.P0_24, Pull::Up); let btn4 = Input::new(p.P0_25, Pull::Up); - unwrap!(spawner.spawn(button_task(1, btn1))); - unwrap!(spawner.spawn(button_task(2, btn2))); - unwrap!(spawner.spawn(button_task(3, btn3))); - unwrap!(spawner.spawn(button_task(4, btn4))); + spawner.spawn(unwrap!(button_task(1, btn1))); + spawner.spawn(unwrap!(button_task(2, btn2))); + spawner.spawn(unwrap!(button_task(3, btn3))); + spawner.spawn(unwrap!(button_task(4, btn4))); } diff --git a/examples/nrf52840/src/bin/manually_create_executor.rs b/examples/nrf52840/src/bin/manually_create_executor.rs index 7ca39348e..f0639eb23 100644 --- a/examples/nrf52840/src/bin/manually_create_executor.rs +++ b/examples/nrf52840/src/bin/manually_create_executor.rs @@ -42,7 +42,7 @@ fn main() -> ! { // `run` calls the closure then runs the executor forever. It never returns. executor.run(|spawner| { // Here we get access to a spawner to spawn the initial tasks. - unwrap!(spawner.spawn(run1())); - unwrap!(spawner.spawn(run2())); + spawner.spawn(unwrap!(run1())); + spawner.spawn(unwrap!(run2())); }); } diff --git a/examples/nrf52840/src/bin/multiprio.rs b/examples/nrf52840/src/bin/multiprio.rs index d58613da4..4d9b986d4 100644 --- a/examples/nrf52840/src/bin/multiprio.rs +++ b/examples/nrf52840/src/bin/multiprio.rs @@ -130,16 +130,16 @@ fn main() -> ! { // High-priority executor: EGU1_SWI1, priority level 6 interrupt::EGU1_SWI1.set_priority(Priority::P6); let spawner = EXECUTOR_HIGH.start(interrupt::EGU1_SWI1); - unwrap!(spawner.spawn(run_high())); + spawner.spawn(unwrap!(run_high())); // Medium-priority executor: EGU0_SWI0, priority level 7 interrupt::EGU0_SWI0.set_priority(Priority::P7); let spawner = EXECUTOR_MED.start(interrupt::EGU0_SWI0); - unwrap!(spawner.spawn(run_med())); + spawner.spawn(unwrap!(run_med())); // Low priority executor: runs in thread mode, using WFE/SEV let executor = EXECUTOR_LOW.init(Executor::new()); executor.run(|spawner| { - unwrap!(spawner.spawn(run_low())); + spawner.spawn(unwrap!(run_low())); }); } diff --git a/examples/nrf52840/src/bin/mutex.rs b/examples/nrf52840/src/bin/mutex.rs index 5c22279b5..a8e9a82cc 100644 --- a/examples/nrf52840/src/bin/mutex.rs +++ b/examples/nrf52840/src/bin/mutex.rs @@ -30,7 +30,7 @@ async fn my_task() { #[embassy_executor::main] async fn main(spawner: Spawner) { let _p = embassy_nrf::init(Default::default()); - unwrap!(spawner.spawn(my_task())); + spawner.spawn(unwrap!(my_task())); loop { Timer::after_millis(300).await; diff --git a/examples/nrf52840/src/bin/pubsub.rs b/examples/nrf52840/src/bin/pubsub.rs index 5ebea9220..c0392b18c 100644 --- a/examples/nrf52840/src/bin/pubsub.rs +++ b/examples/nrf52840/src/bin/pubsub.rs @@ -26,9 +26,9 @@ async fn main(spawner: Spawner) { // It's good to set up the subscribers before publishing anything. // A subscriber will only yield messages that have been published after its creation. - spawner.must_spawn(fast_logger(unwrap!(MESSAGE_BUS.subscriber()))); - spawner.must_spawn(slow_logger(unwrap!(MESSAGE_BUS.dyn_subscriber()))); - spawner.must_spawn(slow_logger_pure(unwrap!(MESSAGE_BUS.dyn_subscriber()))); + spawner.spawn(fast_logger(unwrap!(MESSAGE_BUS.subscriber())).unwrap()); + spawner.spawn(slow_logger(unwrap!(MESSAGE_BUS.dyn_subscriber())).unwrap()); + spawner.spawn(slow_logger_pure(unwrap!(MESSAGE_BUS.dyn_subscriber())).unwrap()); // Get a publisher let message_publisher = unwrap!(MESSAGE_BUS.publisher()); diff --git a/examples/nrf52840/src/bin/raw_spawn.rs b/examples/nrf52840/src/bin/raw_spawn.rs index 717b0faa6..b80954408 100644 --- a/examples/nrf52840/src/bin/raw_spawn.rs +++ b/examples/nrf52840/src/bin/raw_spawn.rs @@ -42,8 +42,8 @@ fn main() -> ! { let run2_task = unsafe { make_static(&run2_task) }; executor.run(|spawner| { - unwrap!(spawner.spawn(run1_task.spawn(|| run1()))); - unwrap!(spawner.spawn(run2_task.spawn(|| run2()))); + spawner.spawn(unwrap!(run1_task.spawn(|| run1()))); + spawner.spawn(unwrap!(run2_task.spawn(|| run2()))); }); } diff --git a/examples/nrf52840/src/bin/self_spawn.rs b/examples/nrf52840/src/bin/self_spawn.rs index 5bfefc2af..acb44f98b 100644 --- a/examples/nrf52840/src/bin/self_spawn.rs +++ b/examples/nrf52840/src/bin/self_spawn.rs @@ -14,12 +14,12 @@ mod config { async fn my_task(spawner: Spawner, n: u32) { Timer::after_secs(1).await; info!("Spawning self! {}", n); - unwrap!(spawner.spawn(my_task(spawner, n + 1))); + spawner.spawn(unwrap!(my_task(spawner, n + 1))); } #[embassy_executor::main] async fn main(spawner: Spawner) { let _p = embassy_nrf::init(Default::default()); info!("Hello World!"); - unwrap!(spawner.spawn(my_task(spawner, 0))); + spawner.spawn(unwrap!(my_task(spawner, 0))); } diff --git a/examples/nrf52840/src/bin/self_spawn_current_executor.rs b/examples/nrf52840/src/bin/self_spawn_current_executor.rs index ddb40dc53..d93067592 100644 --- a/examples/nrf52840/src/bin/self_spawn_current_executor.rs +++ b/examples/nrf52840/src/bin/self_spawn_current_executor.rs @@ -11,12 +11,12 @@ async fn my_task(n: u32) { Timer::after_secs(1).await; info!("Spawning self! {}", n); let spawner = unsafe { Spawner::for_current_executor().await }; - unwrap!(spawner.spawn(my_task(n + 1))); + spawner.spawn(unwrap!(my_task(n + 1))); } #[embassy_executor::main] async fn main(spawner: Spawner) { let _p = embassy_nrf::init(Default::default()); info!("Hello World!"); - unwrap!(spawner.spawn(my_task(0))); + spawner.spawn(unwrap!(my_task(0))); } diff --git a/examples/nrf52840/src/bin/timer.rs b/examples/nrf52840/src/bin/timer.rs index 365695a20..5331ac246 100644 --- a/examples/nrf52840/src/bin/timer.rs +++ b/examples/nrf52840/src/bin/timer.rs @@ -25,6 +25,6 @@ async fn run2() { #[embassy_executor::main] async fn main(spawner: Spawner) { let _p = embassy_nrf::init(Default::default()); - unwrap!(spawner.spawn(run1())); - unwrap!(spawner.spawn(run2())); + spawner.spawn(unwrap!(run1())); + spawner.spawn(unwrap!(run2())); } diff --git a/examples/nrf52840/src/bin/uart_split.rs b/examples/nrf52840/src/bin/uart_split.rs index 46be8f636..51af90727 100644 --- a/examples/nrf52840/src/bin/uart_split.rs +++ b/examples/nrf52840/src/bin/uart_split.rs @@ -30,7 +30,7 @@ async fn main(spawner: Spawner) { // Spawn a task responsible purely for reading - unwrap!(spawner.spawn(reader(rx))); + spawner.spawn(unwrap!(reader(rx))); // Message must be in SRAM { diff --git a/examples/nrf52840/src/bin/usb_ethernet.rs b/examples/nrf52840/src/bin/usb_ethernet.rs index 49856012d..87aa4c6c5 100644 --- a/examples/nrf52840/src/bin/usb_ethernet.rs +++ b/examples/nrf52840/src/bin/usb_ethernet.rs @@ -86,11 +86,11 @@ async fn main(spawner: Spawner) { // Build the builder. let usb = builder.build(); - unwrap!(spawner.spawn(usb_task(usb))); + spawner.spawn(unwrap!(usb_task(usb))); static NET_STATE: StaticCell> = StaticCell::new(); let (runner, device) = class.into_embassy_net_device::(NET_STATE.init(NetState::new()), our_mac_addr); - unwrap!(spawner.spawn(usb_ncm_task(runner))); + spawner.spawn(unwrap!(usb_ncm_task(runner))); let config = embassy_net::Config::dhcpv4(Default::default()); // let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 { @@ -109,7 +109,7 @@ async fn main(spawner: Spawner) { static RESOURCES: StaticCell> = StaticCell::new(); let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); - unwrap!(spawner.spawn(net_task(runner))); + spawner.spawn(unwrap!(net_task(runner))); // And now we can use it! diff --git a/examples/nrf52840/src/bin/usb_serial_multitask.rs b/examples/nrf52840/src/bin/usb_serial_multitask.rs index 5e5b4de35..00a91a233 100644 --- a/examples/nrf52840/src/bin/usb_serial_multitask.rs +++ b/examples/nrf52840/src/bin/usb_serial_multitask.rs @@ -76,8 +76,8 @@ async fn main(spawner: Spawner) { // Build the builder. let usb = builder.build(); - unwrap!(spawner.spawn(usb_task(usb))); - unwrap!(spawner.spawn(echo_task(class))); + spawner.spawn(unwrap!(usb_task(usb))); + spawner.spawn(unwrap!(echo_task(class))); } struct Disconnected {} diff --git a/examples/nrf52840/src/bin/wifi_esp_hosted.rs b/examples/nrf52840/src/bin/wifi_esp_hosted.rs index 26eaf485e..2dd9abfaa 100644 --- a/examples/nrf52840/src/bin/wifi_esp_hosted.rs +++ b/examples/nrf52840/src/bin/wifi_esp_hosted.rs @@ -70,7 +70,7 @@ async fn main(spawner: Spawner) { ) .await; - unwrap!(spawner.spawn(wifi_task(runner))); + spawner.spawn(unwrap!(wifi_task(runner))); unwrap!(control.init().await); unwrap!(control.connect(WIFI_NETWORK, WIFI_PASSWORD).await); @@ -92,7 +92,7 @@ async fn main(spawner: Spawner) { static RESOURCES: StaticCell> = StaticCell::new(); let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); - unwrap!(spawner.spawn(net_task(runner))); + spawner.spawn(unwrap!(net_task(runner))); // And now we can use it! -- cgit