Rust
Notes on Rust programming language
Overview
This local page about the programming language of Rust aims to answer among other questions: How suitable is Rust for embedded development?
Rust By Example (RBE) home page here:
MIT mirror of Rust introduction by chapters:
^ Organizations for Rust
^ Installation and Other Specific Notes
Install Rust on Ubuntu:
Adoption and popularity of Rust:
2025-12-16
Rust crates
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
^ Rust for Embedded Systems
Rust language for embedded systems:
Rust crates for STM32:
^ Specific development boards and Rust
Rust Embassy project has board support crates for certain MCU families. Ted found a crate or sub-project named `stm32f0` which is adaptable to support STMicro's stm32f401re. Needed only to change the MCU name from something other than `stm32f401re` to this MCU name in the Cargo.toml file.
(Thought the Cargo.toml file referenced an STM part with "7" in the name but see https://github.com/embassy-rs/embassy/blob/main/examples/stm32f0/Cargo.toml which is similar to the starting point Ted found.)
Charles Muchene is a software developer working in Rust and other languages. He shares an article on Medium dot com and a github project which presents a minimal start-up program in Rust for the Microbit V2:
^ Panic Handling
When setting panic compilation to 'abort' on panic, may be necessary to write one's own panic function:
How Rust panic is implemented . . . in crates core and std:
^ Rust General Topic
Following sections touch on Rust language features, use and practice. These notes are not specific to embedded development.
^ Crates versus Modules
Excellent article at MIT explaining Rust crates and modules, and how to organize them:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
^ Questions to Answer
(1) For what is Rust language 'derive' keyword used?
#[derive(Clone)]
#[derive(Default)]
(2) How is the `.await` method working, and is this kind of element called a method in Rust?
(3) Rust `match` construct, is this equal to C switch statement?
(4) what does at or near top of source file `use defmt::*;` mean?
(5) Rust `impl` a keyword? Seeing this in lines like `impl CanTxChannel`.
(6) `.await.unwrap()` versus `.await`?
(7) What is the following forward arrow operator in this context?:
pub async fn <function_name>(var declarations) -> () { ... }
(8) What mean the following top of file lines?:
#![no_std] #![no_main]