HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>В языке программирования Rust существует тип Slice, представляющий часть набора элементов. Это может быть, к примеру, часть массива. Формальное определение slice выглядит следующим образом:</p>
1 <p>В языке программирования Rust существует тип Slice, представляющий часть набора элементов. Это может быть, к примеру, часть массива. Формальное определение slice выглядит следующим образом:</p>
2 <p>Чтобы извлечь набор элементов, применяют синтаксис последовательностей -- это оператор .., слева от которого указывают начальный индекс, ну а справа указывают конечный индекс.</p>
2 <p>Чтобы извлечь набор элементов, применяют синтаксис последовательностей -- это оператор .., слева от которого указывают начальный индекс, ну а справа указывают конечный индекс.</p>
3 <p>Также слайс определяется в качестве ссылки, следовательно, он, по сути, не владеет полученным поднабором элементов, а всего лишь содержит ссылку на данный поднабор.</p>
3 <p>Также слайс определяется в качестве ссылки, следовательно, он, по сути, не владеет полученным поднабором элементов, а всего лишь содержит ссылку на данный поднабор.</p>
4 <p>Давайте определим slice, представляющий часть массива:</p>
4 <p>Давайте определим slice, представляющий часть массива:</p>
5 <p>В нашем примере выражение numbers[1..5] указывает, что мы желаем забрать из массива элементы, начиная с первого индекса по пятый, а т. к. индексация в массиве начинается с 0, а конечный индекс не включается в результат, то из массива [1, 2, 3, 4, 5, 6, 7, 8] у нас получится подмассив [2, 3, 4, 5].</p>
5 <p>В нашем примере выражение numbers[1..5] указывает, что мы желаем забрать из массива элементы, начиная с первого индекса по пятый, а т. к. индексация в массиве начинается с 0, а конечный индекс не включается в результат, то из массива [1, 2, 3, 4, 5, 6, 7, 8] у нас получится подмассив [2, 3, 4, 5].</p>
6 <p>После того как слайс инициализирован, мы можем обращаться к его элементам. К примеру, как обращаемся в массиве по индексу:</p>
6 <p>После того как слайс инициализирован, мы можем обращаться к его элементам. К примеру, как обращаемся в массиве по индексу:</p>
7 <p>Кроме того, у нас есть возможность перебрать элементы в цикле for.</p>
7 <p>Кроме того, у нас есть возможность перебрать элементы в цикле for.</p>
8 <p>Смотрим консольный вывод программы:</p>
8 <p>Смотрим консольный вывод программы:</p>
9 <p>В том случае, если нужно взять элементы, начиная с нулевого индекса, индекс можно просто не указывать. Кроме того, вы можете не указывать и конечный индекс -- тогда получится взять элементы до самого последнего. Следовательно, есть возможность применять такие комбинации:</p>
9 <p>В том случае, если нужно взять элементы, начиная с нулевого индекса, индекс можно просто не указывать. Кроме того, вы можете не указывать и конечный индекс -- тогда получится взять элементы до самого последнего. Следовательно, есть возможность применять такие комбинации:</p>
10 <p>Еще посредством слайса вы сможете менять элементы поднабора (и, соответственно, начального набора). В данной ситуации slice надо определить как изменяемую ссылку с оператором<strong>&amp;mut</strong>:</p>
10 <p>Еще посредством слайса вы сможете менять элементы поднабора (и, соответственно, начального набора). В данной ситуации slice надо определить как изменяемую ссылку с оператором<strong>&amp;mut</strong>:</p>
11 <h2>String slice</h2>
11 <h2>String slice</h2>
12 <p>Точно таким же образом вы сможете получить поднабор и из прочих наборов элементов, к примеру, из строки, то есть из типа String:</p>
12 <p>Точно таким же образом вы сможете получить поднабор и из прочих наборов элементов, к примеру, из строки, то есть из типа String:</p>
13 <p>Важно отметить, что для представления строкового слайса в языке программирования Rust существует специальный тип --<strong>&amp;str</strong>. То есть можно написать так:</p>
13 <p>Важно отметить, что для представления строкового слайса в языке программирования Rust существует специальный тип --<strong>&amp;str</strong>. То есть можно написать так:</p>
14 <p>В тот момент, когда обычной строке присваивалась переменная hello, по факту эта переменная представляла строковый слайс либо тип<strong>&amp;str</strong>.</p>
14 <p>В тот момент, когда обычной строке присваивалась переменная hello, по факту эта переменная представляла строковый слайс либо тип<strong>&amp;str</strong>.</p>
15 <p><em>По материалам https://metanit.com/rust/.</em></p>
15 <p><em>По материалам https://metanit.com/rust/.</em></p>
16  
16