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

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Смотрите также:

приведение типа

Пример: Связанный список

Пример использования enums для создания связанного списка:

use List::*;

enum List {

// Cons: Кортежная структура, которая хранит элемент

// и указатель на следующий узел

Cons(u32, Box),

// Nil: Узел, обозначающий конец связанного списка

Nil,

}

// Методы могут быть присоединены к перечислению

impl List {

// Создаём пустой список

fn new() -> List {

// `Nil` имеет тип `List`

Nil

}

// Функция, которая принимает список и возвращает тот же список,

// но с новым элементом в начале

fn prepend(self, elem: u32) -> List {

// `Cons` также имеет тип `List`

Cons(elem, Box::new(self))

}

// Возвращаем длину списка

fn len(&self) -> u32 {

// `self` должен быть сопоставлен (проверен на соответствие),

// поскольку поведение этого метода зависит от варианта `self`

// `self` имеет тип `&List`, а `*self` имеет тип `List`, сопоставление на

// конкретном типе `T` предпочтительнее, чем сопоставление по ссылке `&T`

match *self {

// Мы не можем завладеть `tail`, т.к. `self` заимствован;

// вместо этого возьмём ссылку на `tail`

Cons(_, ref tail) => 1 + tail.len(),

// Базовый случай: Пустой список имеет нулевую длину

Nil => 0

}

}

// Возвращаем представление списка в виде (размещённой в куче) строки

fn stringify(&self) -> String {

match *self {

Cons(head, ref tail) => {

// `format!` похож на `print!`, но возвращает строку

// размещённую в куче, вместо вывода на консоль

format!("{}, {}", head, tail.stringify())

},

Nil => {

format!("Nil")

},

}

}

}

fn main() {

// Создаём пустой связанный список

let mut list = List::new();

// Присоединяем несколько элементов

list = list.prepend(1);

list = list.prepend(2);

list = list.prepend(3);

// Отображаем окончательное состояние списка

println!("размер связанного списка: {}", list.len());

println!("{}", list.stringify());

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

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

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

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

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

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

Учебные пособия, самоучители
Теоретический минимум по Computer Science
Теоретический минимум по Computer Science

Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием.Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто — пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день.«Эта книга пригодится и для решения повседневных задач. Упреждающая выборка и кэширование помогут сложить рюкзак, параллелизм облегчит готовку на кухне.Ну и, разумеется, ваш программный код будет просто потрясающим».Владстон Феррейра Фило

Владстон Феррейра Фило

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