What, why
taken from https://benchmarksgame-team.pages.debian.net/
A programmer had a problem. They thought to themselves, "I know, I'll solve it with threads!".
have Now problems. two they
-- anon
The borrow checker
let mut s = String::from("hello"); let r1 = &s; // no problem let r2 = &s; // no problem let r3 = &mut s; // BIG PROBLEM println!("{}, {}, and {}", r1, r2, r3);
let mut s = String::from("hello"); let r1 = &s; // no problem let r2 = &s; // no problem println!("{} and {}", r1, r2); // variables r1 and r2 will not be used after this point let r3 = &mut s; // no problem println!("{}", r3);
$ cargo run Compiling ownership v0.1.0 (file:///projects/ownership) error[E0502]: cannot borrow `s` as mutable because it is also borrowed as immutable --> src/main.rs:6:14 | 4 | let r1 = &s; // no problem | -- immutable borrow occurs here 5 | let r2 = &s; // no problem 6 | let r3 = &mut s; // BIG PROBLEM | ^^^^^^ mutable borrow occurs here 7 | 8 | println!("{}, {}, and {}", r1, r2, r3); | -- immutable borrow later used here For more information about this error, try `rustc --explain E0502`. error: could not compile `ownership` due to previous error
Cargo
[package] name = "rtiow" version = "0.1.0" edition = "2021" [dependencies] image = "0.23" nalgebra-glm = "0.15" palette = { git = "https://github.com/Ogeon/palette.git" } indicatif = "0.16" rand = "0.8" rayon = "1.5.1"
Rust analyzer
C, C++, Fortran, etc.
Rust
https://msrc-blog.microsoft.com/2019/07/22/why-rust-for-safe-systems-programming/