Bits and pieces of Rust

Useful commands

  • To override default toolchain for a particular project: rustup override set nightly. The directory is stored in ~/.rustup/settings.toml (in overrides section) separately from the project itself.

  • To print all package dependencies as a nice tree in the command line, we can use cargo tree - more details here (works starting from Rust 1.44)


  • A good post by Steven Donovan about closures in Rust. It makes the connection between closures and structs, explains why move |...| is sometimes needed and why we have to add lifetimes annotations like where F: Fn(i32) -> i32 + 'a>

  • All the nitty-gritty details are available in the Rust language reference (sections "Closure expressions" and "Closure types").

Common/standard traits, conversion

Lifetimes, NLL

Error handling

Profiling on Mac


  • "Rust Tidbits: What is a Lang Item?" - an interesting explanation about traits and other items known to the Rust compiler and marked with #[lang] annotation. I really enjoyed this article, but for some reason it was quite hard to google to find it again (perhaps because I googled "traits" and "lang" is not a very googleable term).