X-Git-Url: https://git.ralfj.de/rust-101.git/blobdiff_plain/e2374eed1c3ae8d0063138ea011e86bbd42473ab..1b77423cf168e5ff2b41667ea67252f4fbc44652:/src/part04.rs diff --git a/src/part04.rs b/src/part04.rs index 0ecfe76..14deb89 100644 --- a/src/part04.rs +++ b/src/part04.rs @@ -86,10 +86,10 @@ fn shared_borrow_demo() { vec_min(&v); println!("The first element is: {}", *first); } -// What's going on here? First, `&` is how you create a shared borrow to something. This code creates three -// shared borrows to `v`: The borrow for `first` begins in the 2nd line of the function and lasts all the way to -// the end. The other two borrows, created for calling `vec_min`, only last for the duration of that -// respective call. +// What's going on here? First, `&` is how you create a shared borrow to something. All borrows are created like +// this - there is no way to have something like a NULL pointer. This code creates three shared borrows to `v`: +// The borrow for `first` begins in the 2nd line of the function and lasts all the way to the end. The other two +// borrows, created for calling `vec_min`, only last for the duration of that respective call. // // Technically, of course, borrows are pointers. Notice that since `vec_min` only gets a shared // borrow, Rust knows that it cannot mutate `v` in any way. Hence the pointer into the buffer of `v` @@ -129,7 +129,8 @@ fn mutable_borrow_demo() { // they do. However, the `v` in `mutable_borrow_demo` is not actually usable, it is not *active*: As long as there is an // outstanding borrow, Rust will not allow you to do anything with `v`. -// So, to summarize - the ownership and borrowing system of Rust enforces the following three rules: +// ## Summary +// The ownership and borrowing system of Rust enforces the following three rules: // // * There is always exactly one owner of a piece of data // * If there is an active mutable borrow, then nobody else can have active access to the data