projects
/
rust-101.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tune Makefile for less pointless rebuilding
[rust-101.git]
/
workspace
/
src
/
part04.rs
diff --git
a/workspace/src/part04.rs
b/workspace/src/part04.rs
index fb23f2906001b0f8111df9f0a4c45b8f4315b8a7..bde913f20cf6b7750591c0bc3849daaaa09ea250 100644
(file)
--- a/
workspace/src/part04.rs
+++ b/
workspace/src/part04.rs
@@
-1,5
+1,3
@@
-// ***Remember to enable/add this part in `main.rs`!***
-
// Rust-101, Part 04: Ownership, Borrowing
// =======================================
// Rust-101, Part 04: Ownership, Borrowing
// =======================================
@@
-16,7
+14,7
@@
fn work_on_vector(v: Vec<i32>) { /* do something */ }
fn ownership_demo() {
let v = vec![1,2,3,4];
work_on_vector(v);
fn ownership_demo() {
let v = vec![1,2,3,4];
work_on_vector(v);
- /* println!("The first element is: {}", v[0]); */
+ /* println!("The first element is: {}", v[0]); */
/* BAD! */
}
// ## Shared borrowing
}
// ## Shared borrowing
@@
-25,7
+23,9
@@
fn vec_min(v: &Vec<i32>) -> Option<i32> {
use std::cmp;
let mut min = None;
use std::cmp;
let mut min = None;
- for e in v {
+ // This time, we explicitly request an iterator for the vector `v`. The method `iter` borrows the vector
+ // it works on, and provides shared borrows of the elements.
+ for e in v.iter() {
// In the loop, `e` now has type `&i32`, so we have to dereference it to obtain an `i32`.
min = Some(match min {
None => *e,
// In the loop, `e` now has type `&i32`, so we have to dereference it to obtain an `i32`.
min = Some(match min {
None => *e,
@@
-47,7
+47,7
@@
fn shared_borrow_demo() {
// ## Mutable borrowing
fn vec_inc(v: &mut Vec<i32>) {
// ## Mutable borrowing
fn vec_inc(v: &mut Vec<i32>) {
- for e in v {
+ for e in v
.iter_mut()
{
*e += 1;
}
}
*e += 1;
}
}
@@
-57,7
+57,7
@@
fn mutable_borrow_demo() {
/* let first = &v[0]; */
vec_inc(&mut v);
vec_inc(&mut v);
/* let first = &v[0]; */
vec_inc(&mut v);
vec_inc(&mut v);
- /* println!("The first element is: {}", *first); */
+ /* println!("The first element is: {}", *first); */
/* BAD! */
}
// ## Summary
}
// ## Summary