Последовательность Range

Последнее обновление: 16.04.2021

Тип Range или последовательность представляет некоторый диапазон элементов. В Rust последовательности используются чаще всего для получения какой-то части набора элементов, например, массива или строки. Хотя этим применение последовательностей не ограничивается.

Для создания последовательности применяется оператор .. (две точки). Его общая форма:

начальное_значение .. конечное_значение

Слева от оператора .. указывается начальное значение диапазона, а справа - конечное значение. При этом конечное значение не включается в диапазон.

Также стоит отметить, что если начальное значение больше конечного, то последовательность будет пустой.

Например:

fn main(){
	
	let numbers = 1..9;
	for num in numbers{
		print!("{} ", num);		// 1 2 3 4 5 6 7 8
	}
}

В данном случае образуется последовательность чисел от 1 до 9 (число 9 не включается в последовательность). А с помощью цикла for можно перебрать последовательность.

Хотя мы можем использовать оператор .. для создания последовательности, но в реальности она представляет структуру std::ops::Range, которая имеет два поля: start (начальное значение) и end (конечное значение). Например, предыдущий пример мы могли бы переписать так:

fn main(){
	let numbers = std::ops::Range { start: 1, end: 9 };
	for num in numbers{
		print!("{} ", num);		// 1 2 3 4 5 6 7 8
	}
}

Также для определения последовательности можно использовать модификацию оператора - ..=, которая позволяет включить в набор конечное значение:

fn main(){
	
	let numbers = 1..=9;	// число 9 включается в последовательность
	for num in numbers{
		print!("{} ", num);		// 1 2 3 4 5 6 7 8 9
	}
}

Использование последовательности

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

fn main(){
	
	let numbers = [1, 2, 3, 4, 5, 6, 7, 8];
	
	for num in numbers[1..5].iter(){
		print!("{} ", num)				// 2 3 4 5
	}
}

Более подробно использование последовательностей для извлечения поднабора рассматривается в теме про тип slice.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850