Зрізи

Зріз дає змогу поглянути на більшу колекцію:

fn main() {
    let mut a: [i32; 6] = [10, 20, 30, 40, 50, 60];
    println!("a: {a:?}");

    let s: &[i32] = &a[2..4];

    println!("s: {s:?}");
}
  • Зрізи запозичують дані зі зрізаного типу.
This slide should take about 10 minutes.
  • Ми створюємо зріз, запозичуючи a та вказуючи початковий і кінцевий індекси в дужках.

  • Якщо зріз починається з індексу 0, синтаксис діапазону Rust дозволяє нам відкинути початковий індекс, тобто &a[0..a.len()] і &a[..a.len()] ідентичні.

  • Теж саме стосується останнього індексу, тому &a[2..a.len()] і &a[2..] ідентичні.

  • Щоб легко створити повний зріз масиву, ми можемо використовувати &a[..].

  • s є посиланням на зріз i32. Зверніть увагу, що тип s (&[i32]) більше не згадує довжину масиву. Це дозволяє нам виконувати обчислення на зрізах різного розміру.

  • Зрізи завжди запозичуються з іншого об'єкта. У цьому прикладі a має залишатися 'живим' (в області застосування) принаймні стільки ж, скільки і наш зріз.