* beside my personal favorites
Collections
Specific Collections
Microblogs
Guides
Utils
Project Logs
Times

Ongoing
Rust Log
Learning through advent of code (probably a bad idea)
General
Libraries
File - Struct defined in std::fs
Keywords
mut - Mutable, variable can be changed after initially set. Variables are immutable by default. Indicating mutability helps prevent bugs at compile time
&mut - Create mutable reference to a value, whether or not variable can be reassigned.
dyn - Can prepend errors to
Types
Option<T> - All types are either Some(T) (an element of type T exists) or N (No element of type T exists)
Result<T,E> - Similar to option, but takes in result of computation. Can output either Ok(T) (success) or Err(E) (fail)
Methods
.unwrap() - Can be called on Option or Result type. If Option is None or Result is Err(E), then the program will panic
Traits
#![feature(never_type)] - Indicating that the function will never return
Other Weird things
- ! delineates macros and not functions
- Adding
bat the beginning of aprintlnorstdout, makes your output a byte string instead of a Unicode scalar value. Most of the time this doesn't super matter as long as you are consistent, butu8values can be preferred because they are always 8 bits, vs Unicode scalar values can be up to 32 bits usizeused for any indices- If you don't use
&when referencing a value, you are taking ownership of it
Embedded Systems
General Information
-
#![no_std]and#![no_main]aren't available, uselibcoreinstead- Still have access to primitive types (u8, i32, f64), string slices, time, arrays, and iterators
- Not pulling in other libraries at least means compile times are fast
-
You usually don't have memory allocation, your code is the only thing running
-
No threads, no networking, no
std::fs -
Using generic HALs to apply functionality to known characteristics like
InputandOutput, and then using chip specific libraries to plug into generic HAL for interoperability -
Within USBs, there are different classes. Eg for keyboards it is the HID (Human Interface Device) class