@@ -8,4 +8,10 @@ Its main purpose was to provide the audience with enough information about Rust
*[Design Principles](./design-principles/): Contains slides describing the general design principles of the Rust language and how it relates to other languages.
*[Ecosystem](./ecosystem/): Contains slides describing the Rust ecosystem, including how the language is developed, which tools are available and who uses Rust today.
*[Pros/Cons](./pros-cons/): Contains slides listing several reasons for and against Rust that one should be aware of.
*[Unsafe](./unsafe-rust/): Contains slides introducing unsafe Rust and myths around it. This part is accompanied by the code in the other directories.
*[Unsafe](./unsafe-rust/): Contains slides introducing unsafe Rust and myths around it. This part is accompanied by the code in the other directories:
- ["Pointer dereference"](./ptr-deref/): Contains an example of the kinds of behavior unsafe Rust allows without incurring undefined behavior.
- ["No unsafe, no bugs"](./no-unsafe-no-bugs/): Contains an example of a safe Rust program that nevertheless contains a data race-based bug.
- ["Safe means safe"](./safe-means-safe/): Contains an example of a safe Rust program with `#[forbid(unsafe_code)]` that nevertheless contains unsafe code under the hood.
- ["Unsafe Rust is C++"](./unsafe-rust-is-cpp/): Contains an example of an unsafe program that is correct under C++ semantics but results in undefined behavior in Rust.
- ["Enforcing invariants"](./enforcing-invariants/): Contains an example on how to power-use the safe-unsafe boundary to guarantee that methods can only be safely applied; this example is a very simplified version of two-watched literal lists in SAT solving.