Update Slicing subsection of Vector section

Slices can be mutable as well as immutable, contrary to what the text currently says. This commit updates the text, and the exercise, to reflect this.
This commit is contained in:
mckzm
2024-06-15 13:35:27 +09:00
committed by GitHub
parent 9fb657287f
commit c4804e3101

View File

@ -111,9 +111,9 @@ fn main() {
### Slicing ### Slicing
A Vec can be mutable. On the other hand, slices are read-only objects. To get a slice, use `&`. Immutable or mutable slices of Vecs can be taken, using `&` or `&mut, respectively.
In Rust, its more common to pass slices as arguments rather than vectors when you just want to provide read access. The same goes for `String` and `&str`. In Rust, its more common to pass immutable slices as arguments rather than vectors when you just want to provide read access. The same goes for `String` and `&str`.
5. 🌟🌟 5. 🌟🌟
```rust,editable ```rust,editable
@ -129,14 +129,16 @@ fn main() {
assert_eq!(slice1, slice2); assert_eq!(slice1, slice2);
// Slices are read only // Slices can also be mutable, in which
// case mutating them will mutate the 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..3]; let slice3 = &mut v[0..3];
slice3.push(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!");
} }