Слайсы представляют собой особый тип данных в Rust, используемый для удобного доступа к фрагментам массивов, строк и векторов. Они позволяют разработчику извлекать нужные элементы коллекций без копирования исходных данных, что значительно повышает производительность приложений.
Эта статья научит вас основам работы с слайсами в Rust на практических примерах.

Что такое слайсы?

Представьте себе ситуацию, когда вам нужно обратиться лишь к части массива. Например, имеется следующий массив чисел:
Допустим, мы хотим получить доступ ко второму и третьему элементам массива. Для этого создадим срез массива следующим образом:
Здесь важно отметить правую сторону выражения:
  • &numbers: ссылка на переменную numbers, не саму её копию.
  • [1..3]: обозначение диапазона среза, начиная с индекса 1 включительно и заканчивая индексом 3 исключая.
Таким образом, slice теперь хранит ссылку на вторую и третью позицию массива.

Пример использования слайсов

Давайте рассмотрим простой пример вывода элементов массива и полученного среза:
Результат:
Обратите внимание, что срез — это всего лишь ссылка на определённую область памяти, а не сами значения. Именно поэтому перед именем переменной стоит символ &.

Пропуск индексов при создании слайса

При работе со срезами Rust позволяет пропускать начальные или конечные индексы либо оба сразу.
Например:

Пропуск начального индекса:

Результат:
Это эквивалентно записи &numbers[0..3], поскольку первый индекс подразумевается равным нулю.

Пропуск конечного индекса:

Результат:
Здесь записано &numbers[2..], что означает срез, начиная с третьего элемента (2) и до конца массива.

Пропуск обоих индексов:

Результат:
Этот способ используется, если нужно создать срез, охватывающий весь массив целиком.

Изменяемые слайсы

Для изменения значений внутри слайса используется ключевое слово &mut. Рассмотрим простой пример:
Результат:
Теперь вы можете изменять любые элементы внутри вашего среза!

Можно ли создавать срезы строк?

Да, точно так же, как и массивы, строки тоже можно нарезать на фрагменты:
Результат:
Чтобы больше узнать о строках в Rust, можете ознакомиться с нашей статьей по этой теме.