Slices
A slice gives you a view into a larger collection:
1. ```
fn main() {
```
2. ```
let mut a: [i32; 6] = [10, 20, 30, 40, 50, 60];
```
3. ```
println!("a: {a:?}");
```
5. ```
let s: &[i32] = &a[2..4];
```
7. ```
println!("s: {s:?}");
```
8. ```
}
```
- Slices borrow data from the sliced type.
This slide should take about 10 minutes.
- We create a slice by borrowing
aand specifying the starting and ending indexes in brackets. - If the slice starts at index 0, Rust’s range syntax allows us to drop the starting index, meaning that
&a[0..a.len()]and&a[..a.len()]are identical. - The same is true for the last index, so
&a[2..a.len()]and&a[2..]are identical. - To easily create a slice of the full array, we can therefore use
&a[..]. sis a reference to a slice ofi32s. Notice that the type ofs(&[i32]) no longer mentions the array length. This allows us to perform computation on slices of different sizes.- Slices always borrow from another object. In this example,
ahas to remain ‘alive’ (in scope) for at least as long as our slice.
