mirror of
https://github.com/sunface/rust-by-practice.git
synced 2025-06-23 04:29:41 +00:00
update vector/slicing exercise solution w/ mutable slice material
This commit is contained in:
@ -156,21 +156,24 @@ fn main() {
|
|||||||
let mut v = vec![1, 2, 3];
|
let mut v = vec![1, 2, 3];
|
||||||
|
|
||||||
let slice1 = &v[..];
|
let slice1 = &v[..];
|
||||||
// out of bounds will cause a panic
|
// Out of bounds will cause a panic
|
||||||
// You must use `v.len` here
|
// You must use `v.len` here
|
||||||
let slice2 = &v[0..v.len()];
|
let slice2 = &v[0..3];
|
||||||
|
|
||||||
assert_eq!(slice1, slice2);
|
assert_eq!(slice1, slice2);
|
||||||
|
|
||||||
// slice are read only
|
// A slice can also be mutable, in which
|
||||||
|
// case mutating it will also mutate its underlying Vec
|
||||||
// Note: slice and &Vec are different
|
// Note: slice and &Vec are different
|
||||||
let vec_ref: &mut Vec<i32> = &mut v;
|
let vec_ref: &mut Vec<i32> = &mut v;
|
||||||
(*vec_ref).push(4);
|
(*vec_ref).push(4);
|
||||||
let slice3 = &mut v[0..];
|
let slice3 = &mut v[0..4];
|
||||||
|
slice3[3] = 42;
|
||||||
|
|
||||||
assert_eq!(slice3, &[1, 2, 3, 4]);
|
assert_eq!(slice3, &[1, 2, 3, 42]);
|
||||||
|
assert_eq!(v, &[1, 2, 3, 42]);
|
||||||
|
|
||||||
println!("Success!")
|
println!("Success!");
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user