Библиотека knigago >> Компьютеры: Языки и системы программирования >> Другие языки и системы программирования >> Rust на примерах

Коллектив авторов - Rust на примерах

Rust на примерах
Книга - Rust на примерах.   Коллектив авторов  - прочитать полностью в библиотеке КнигаГо
Название:
Rust на примерах
Коллектив авторов

Жанр:

Другие языки и системы программирования, Учебники и самоучители по компьютеру, Любительские переводы, Программирование: прочее

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Rust на примерах"

https://doc.rust-lang.ru/stable/rust-by-example/
Rust - современный язык программирования, нацеленный на безопасность, скорость и параллелизм. Данные цели выполняются при условии безопасной работы с памятью без использования сборщика мусора.

Rust на примерах - это набор исполняемых примеров, которые иллюстрируют различные концепции языка Rust, а так же возможности его стандартной библиотеки. Для того, чтобы подчеркнуть ещё больше из этих примеров, не забудьте установить Rust на своём компьютере и проверить официальную документацию. Если вы ранее не сталкивались с языком программирования Rust, то советую вам для начала ознакомиться с русскоязычной книгой по Rust. Кроме этого можно посмотреть исходный код этого сайта или оригинала.

Читаем онлайн "Rust на примерах". [Страница - 3]

типажа fmt::Display автоматически предоставляет реализацию типажа ToString, который позволяет нам конвертировать наш тип в String.

Задания

   • Исправьте две ошибки в коде выше (смотрите ИСПРАВЬТЕ), чтобы код компилировался без ошибок

   • Добавьте макрос println!, который выводит: Pi is roughly 3.142 с помощью управления количеством знаков после запятой. Для выполнения данного задания создайте переменную, которая будет хранить в себе значение числа Пи: let pi = 3.141592. (Подсказка: вам необходимо ознакомиться с документацией по std::fmt, чтобы узнать, как отобразить в консоли только часть знаков после запятой).

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

std::fmt, макросы, struct, и trait

Debug

Все типы, которые будут использовать типажи форматирования std::fmt требуют их реализации для возможности печати. Автоматическая реализация предоставлена только для типов из стандартной библиотеки (std). Все остальные типы должны иметь собственную реализацию.

C помощью типажа fmt::Debug это сделать очень просто. Все типы могут выводить (автоматически создавать, derive) реализацию fmt::Debug. Сделать подобное с fmt::Display невозможно, он должен быть реализован вручную.

#![allow(unused)]

fn main() {

// Эта структура не может быть напечатана с помощью `fmt::Display`

// или с помощью `fmt::Debug`

struct UnPrintable(i32);


// Атрибут `derive` автоматически реализует

// необходимые методы, чтобы была возможность

// печатать данную `структуру` с помощью `fmt::Debug`.

#[derive(Debug)]

struct DebugPrintable(i32);

}

Все типы в стандартной библиотеке (std) могут быть напечатаны с {:?}:

// Вывод и реализация `fmt::Debug` для `Structure`.

// `Structure` - это структура, которая содержит в себе один `i32`.

#[derive(Debug)]

struct Structure(i32);

// Добавим структуру `Structure` в структуру `Deep`.

// Реализуем для `Deep` возможность вывода с помощью fmt::Debug`.

#[derive(Debug)]

struct Deep(Structure);

fn main() {

// Вывод с помощью `{:?}` аналогичен `{}`.

println!("{:?} месяцев в году.", 12);

println!("{1:?} {0:?} - это имя {actor:?}.",

"Слэйтер",

"Кристиан",

actor="актёра");

// `Structure` теперь можно напечатать!

println!("Теперь {:?} будет выведена на экран!", Structure(3));

// Проблема с `выводом (derive)`, в том, что у нас не будет контроля

// над тем, как будет выглядеть результат.

// Что если мы хотим напечатать просто `7`?

println!("А теперь напечатаем {:?}", Deep(Structure(7)));

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Так что fmt:: Debug определённо делает это для печати, но жертвует некоторыми изящество. Rust также обеспечивает "красивую печать" с помощью {:#?}.

#[derive(Debug)]

struct Person<'a> {

name: &'a str,

age: u8

}

fn main() {

let name = "Peter";

let age = 27;

let peter = Person { name, age };

// Pretty print

println!("{:#?}", peter);

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Можно вручную реализовать fmt::Display для управления отображением.

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

attributes, derive, std::fmt, и struct

Display

fmt::Debug выглядит не очень компактно и красиво, поэтому полезно настраивать внешний вид информации, которая будет напечатана. Это можно сделать реализовав типаж fmt::Display вручную, который использует маркер {} для печати. Его реализация выглядит следующим образом:

#![allow(unused)]

fn main() {

// Импортируем (с помощью `use`) модуль `fmt`, чтобы мы могли его использовать.

use std::fmt;


// Определяем структуру, для которой будет реализован `fmt::Display`.

// Это простая кортежная структура c именем `Structure`, которая хранит в себе `i32`.

struct Structure(i32);


// Чтобы была возможность использовать маркер `{}`

// `типаж (trait) fmt::Display` должен быть реализован вручную

// для данного типа.

impl fmt::Display for Structure {

// Этот типаж требует реализацию метода `fmt` с данной сигнатурой:

fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {

// Записываем первый элемент в предоставленный выходной

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.