Difference between revisions of "Rust"

From Wiki at Neela Nurseries
Jump to navigation Jump to search
m (Create sub-section q Specific development boards and Rust q)
m (Add link to Rust crate for Microbit-v2 board support)
 
(4 intermediate revisions by the same user not shown)
Line 38: Line 38:
  
 
*  https://users.rust-lang.org/t/what-are-the-benefits-of-using-crate-as-translation-unit-instead-of-a-source-file/11423/4
 
*  https://users.rust-lang.org/t/what-are-the-benefits-of-using-crate-as-translation-unit-instead-of-a-source-file/11423/4
 +
 +
<hr>
 +
 +
== - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - - ==
  
 
== [[#top|^]] Rust for Embedded Systems ==
 
== [[#top|^]] Rust for Embedded Systems ==
Line 54: Line 58:
  
 
=== [[#top|^]] Specific development boards and Rust ===
 
=== [[#top|^]] 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.)
 +
 +
*  https://github.com/embassy-rs/embassy/tree/main/examples
  
 
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:
 
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:
Line 60: Line 70:
  
 
*  https://github.com/charlesmuchene/minimal-rust-microbit-starter/tree/main
 
*  https://github.com/charlesmuchene/minimal-rust-microbit-starter/tree/main
 +
 +
=== Crate Microbit-V2 ===
 +
 +
*  [[#top|^]] https://crates.io/crates/microbit-v2
  
 
== [[#top|^]] Panic Handling ==
 
== [[#top|^]] Panic Handling ==
Line 72: Line 86:
  
 
*  https://rustc-dev-guide.rust-lang.org/panic-implementation.html
 
*  https://rustc-dev-guide.rust-lang.org/panic-implementation.html
 +
 +
<hr>
 +
 +
== [[#top|^]] Rust General Topic ==
 +
 +
Following sections touch on Rust language features, use and practice.  These notes are not specific to embedded development.
 +
 +
=== [[#top|^]] Crates versus Modules ===
 +
 +
Excellent article at MIT explaining Rust crates and modules, and how to organize them:
 +
 +
*  https://web.mit.edu/rust-lang_v1.25/arch/amd64_ubuntu1404/share/doc/rust/html/book/first-edition/crates-and-modules.html
 +
 +
== - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - -  - - - - - ==
  
 
== [[#top|^]] Questions to Answer ==
 
== [[#top|^]] Questions to Answer ==

Latest revision as of 17:04, 25 January 2026

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:

Crate 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]

^ References Rust and Embassy