update vector/slicing exercise solution w/ mutable slice material

This commit is contained in:
mckzm
2024-06-15 13:39:12 +09:00
committed by GitHub
parent c4804e3101
commit fd0c2c50c1

View File

@ -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!");
} }
``` ```