// Все элементы могут быть инициализированы одной и той же переменной
let ys: [i32; 500] = [0; 500];
// Индекс начинается с 0
println!("первый элемент массива: {}", xs[0]);
println!("второй элемент массива: {}", xs[1]);
// `len` возвращает длину массива
println!("размер массива: {}", xs.len());
// Память для массивов выделяется в стеке
println!("массив занимает {} байт", mem::size_of_val(&xs));
// Массивы могут быть автоматически заимствованы как срез
println!("заимствуем весь массив, используя срез");
analyze_slice(&xs);
// Срезы могут указывать на часть массива
// Они имеют форму [starting_index..ending_index]
// starting_index - это первая позиция в срезе
// ending_index - на 1 больше, чем последняя позиция в срезе
println!("заимствуем часть массива как срез");
analyze_slice(&ys[1 .. 4]);
// Выход за границу массива заставит компилятор паниковать.
// Не надо так.
println!("{}", xs[5]);
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В языке программирования Rust пользовательские типы данных в основном создаются при помощи двух ключевых слов:
• struct: определение структуры
• enum: определение перечисления
Константы так же могут быть созданы с помощью ключевых слов const и static.
Существует три типа структур, которые можно создать с помощью ключевого слова struct:
• Кортежная структура, которая, в общем, является именованным кортежем.
• Классическая C структура.
• Единичная структура, которая не имеет полей, но может быть полезна для обобщённых типов.
#[derive(Debug)]
struct Person<'a> {
// 'a определяет время жизни
name: &'a str,
age: u8,
}
// unit-структура
struct Nil;
// Кортежная структура
struct Pair(i32, f32);
// Структура с двумя полями
struct Point {
x: f32,
y: f32,
}
// Структуры могут быть использованы в качестве полей другой структуры
#[allow(dead_code)]
struct Rectangle {
// Прямоугольник может быть определён по расположению в пространстве
// его верхнего левого и нижнего правого углов
top_left: Point,
bottom_right: Point,
}
fn main() {
// Создадим структуру при помощи сокращённой инициализации полей
let name = "Peter";
let age = 27;
let peter = Person { name, age };
// Распечатаем отладочную информацию о структуре
println!("{:?}", peter);
// Инициализаруем `Point`
let point: Point = Point { x: 10.3, y: 0.4 };
// Доступ к полям структуры