TL;DR: An introduction to Rust which starts with a Rust-unsafe C program, writing a Rust equivalent, then evolves it towards some of the higher-level abstractions in Rust.
(As opposed to the non-dangerous way which means writing safe code to begin with and mentioning unsafe as the exception)
(As opposed to the non-dangerous way which means writing safe code to begin with and mentioning unsafe as the exception)