Читаем Rust на примерах полностью

// Все элементы могут быть инициализированы одной и той же переменной

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

<p id="Пользовательские_типы"><strong><a l:href="#Пользовательские_типы">Пользовательские типы</a></strong></p>

В языке программирования Rust пользовательские типы данных в основном создаются при помощи двух ключевых слов:

   • struct: определение структуры

   • enum: определение перечисления

Константы так же могут быть созданы с помощью ключевых слов const и static.

<p id="Структуры"><strong><a l:href="#Структуры">Структуры</a></strong></p>

Существует три типа структур, которые можно создать с помощью ключевого слова 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 };

// Доступ к полям структуры

Перейти на страницу:

Похожие книги

Компьютерные сети. 6-е изд.
Компьютерные сети. 6-е изд.

Перед вами шестое издание самой авторитетной книги по современным сетевым технологиям, написанное признанным экспертом Эндрю Таненбаумом в соавторстве со специалистом компании Google Дэвидом Уэзероллом и профессором Чикагского университета Ником Фимстером. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития. Авторы подробно объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до прикладного. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования интернета и компьютерных сетей различного типа. Большое внимание уделяется сетевой безопасности. Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.

Дэвид Уэзеролл , Ник Фимстер , Эндрю Таненбаум

Учебные пособия, самоучители