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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Вы можете посмотреть полный список типажей форматирования и их типы аргументов в документации к std::fmt.

<p id="Задание_3"><strong><a l:href="#Задание_3">Задание</a></strong></p>

Добавьте реализацию типажа fmt::Display для структуры Color, чтобы вывод отображался вот так:

RGB (128, 255, 90) 0x80FF5A

RGB (0, 3, 254) 0x0003FE

RGB (0, 0, 0) 0x000000

Пару подсказок, если вы не знаете, что делать:

   • Вам возможно потребуется перечислить каждый цвет несколько раз,

   • Вы можете добавить немного нулей с :02.

<p id="Смотрите_также_5"><strong><a l:href="#Смотрите_также_5">Смотрите также:</a></strong></p>

std::fmt

<p id="Примитивы"><strong><a l:href="#Примитивы">Примитивы</a></strong></p>

Rust предоставляет доступ к большому количеству примитивов:

<p id="Скалярные_типы"><strong><a l:href="#Скалярные_типы">Скалярные типы</a></strong></p>

   • знаковые целочисленные: i8, i16, i32, i64 и isize (размер указателя)

   • беззнаковые целочисленные: u8, u16, u32, u64 и usize (размер указателя)

   • вещественные: f32, f64

   • char скалярное значение Unicode, например: 'a', 'α' и '∞' (4 байта каждый)

   • bool: true или false

   • единичный тип (), значение которого так же ()

Несмотря на то, что значение единичного типа является кортежем, оно не считается составным типом, потому что не содержит нескольких значений.

<p id="Составные_типы"><strong><a l:href="#Составные_типы">Составные типы</a></strong></p>

   • массивы, например [1, 2, 3]

   • кортежи, например (1, true)

Переменные всегда должны быть аннотированы. Числам можно указать определённый тип с помощью суффикса, иначе будет присвоен тип по умолчанию. Целочисленные значения по умолчанию i32, а вещественные f64. Стоит заметить, что Rust также умеет выводить типы из контекста.

fn main() {

// Переменные могут быть аннотированы.

let logical: bool = true;

let a_float: f64 = 1.0; // Обычная аннотация

let an_integer = 5i32; // Суффиксная аннотация

// Этим переменным будет присвоен тип по умолчанию.

let default_float = 3.0; // `f64`

let default_integer = 7; // `i32`

// Тип также может быть выведен из контекста.

let mut inferred_type = 12; // Тип i64 выводится из другой строки

inferred_type = 4294967296i64;

// Значение изменяемой переменной может быть изменено.

let mut mutable = 12; // Изменяемое `i32`

mutable = 21;

// Ошибка! Тип переменной изменить нельзя.

mutable = true;

// Переменные могут быть переопределены с помощью затенения.

let mutable = true;

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

<p id="Смотрите_также_6"><strong><a l:href="#Смотрите_также_6">Смотрите также:</a></strong></p>

стандартная библиотека (std), mut, вывод типов и затенение

<p id="Литералы_и_операторы"><strong><a l:href="#Литералы_и_операторы">Литералы и операторы</a></strong></p>

Целочисленное 1, вещественное 1.2, символ 'a', строка "abc", логическое true и единичный тип () могут быть выражены с помощью литералов.

Целочисленные значения так же могут быть выражены с помощью шестнадцатеричного, восьмеричного или двоичного обозначения используя соответствующие префиксы: 0x, 0o или 0b.

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

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

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

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

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

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