Rust

Rust is a language that I’ve been in love with for ages.

It’s also one of the most frustrating languages I’ve ever used. This is because I’ve never written enough rust to actually be good at it.

It also has the best documentation of any language.

Swift/iOS Interop

Follow this article

Add the iOS architectures to rustup, as well as the tools for building universal iOS binaries (cargo-lipo) and C headers from rust (cbindgen).

rustup target add aarch64-apple-ios armv7-apple-ios armv7s-apple-ios x86_64-apple-ios i386-apple-ios
cargo install cargo-lipo
cargo install cbindgen

Serializing json in rust.

Follow this guide using serde.

Essentially:

Add to Cargo.toml‘s [Dependencies] section:

serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

Make your struct derive Serialize, and pass it to serde_json::to_string()

#[derive(Serialize)]
struct Thing {
    x: i32
}

fn main() {
    let thing = Thing { a: 1 }
    println!("{}", serde_json::to_string(&thing).unwrap());
}

Rust on an AVR microcontroller

Source-ish: Rust on Arduino.

You can also use this to abstract for pretty much any AVR microcontroller. I have enough bare microcontrollers to last me a lifetime.

⚠️ This is only valid while Rahix/avr-hal#124, rust-lang/rust#82104, and rust-lang/compiler-builtins#400 are open

There’s a bug in the rust compiler right now and you can’t use a rust toolchain after 2021-01-07. To mitigate this, add the following to your project’s Cargo.toml:

[toolchain]
channel = "nightly-2021-01-07"
components = ["rust-src"]

Also check out avr-rust/ruduino for a library that provides reusable components for an arduino uno/atmega 328p.

Last updated: 2021-05-21 11:56:30 -0700