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

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

<p id="Атрибут_derive"><strong><a l:href="#Атрибут_derive">Атрибут</a><a l:href="#Атрибут_derive">Derive</a></strong></p>

Компилятор способен предоставить основные реализации для некоторых типажей с помощью атрибута #[derive]. Эти типажи могут быть реализованы вручную, если необходимо более сложное поведение.

Ниже приводится список выводимых типажей:

   • Типажи сравнения:Eq, PartialEq, Ord, PartialOrd

   • Clone, для создания T из &T с помощью копии.

   • Copy, чтобы создать тип семантикой копирования, вместо семантики перемещения.

   • Hash, чтобы вычислить хеш из &T.

   • Default, чтобы создать пустой экземпляр типа данных.

   • Debug, чтобы отформатировать значение с помощью {:?}.

// `Centimeters`, кортежная структура, которую можно сравнить

#[derive(PartialEq, PartialOrd)]

struct Centimeters(f64);

// `Inches`, кортежная структура, которую можно напечатать

#[derive(Debug)]

struct Inches(i32);

impl Inches {

fn to_centimeters(&self) -> Centimeters {

let &Inches(inches) = self;

Centimeters(inches as f64 * 2.54)

}

}

// `Seconds`, кортежная структура без дополнительных атрибутов

struct Seconds(i32);

fn main() {

let _one_second = Seconds(1);

// Ошибка: `Seconds` не может быть напечатана; не реализован типаж `Debug`

//println!("Одна секунда выглядит как: {:?}", _one_second);

// ЗАДАНИЕ ^ Попробуйте раскомментировать эту строку

// Ошибка: `Seconds` нельзя сравнить; не реализован типаж `PartialEq`

//let _this_is_true = (_one_second == _one_second);

// ЗАДАНИЕ ^ Попробуйте раскомментировать эту строку

let foot = Inches(12);

println!("Один фут равен {:?}", foot);

let meter = Centimeters(100.0);

let cmp =

if foot.to_centimeters() < meter {

"меньше"

} else {

"больше"

};

println!("Один фут {} одного метра.", cmp);

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

derive

<p id="Возврат_типажа_с_dyn"><strong><a l:href="#Возврат_типажа_с_dyn">Возврат типажа с</a><a l:href="#Возврат_типажа_с_dyn">dyn</a></strong></p>
Перейти на страницу:

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

Писать нельзя молчать
Писать нельзя молчать

Неужели ты опять отложишь мечту – написать книгу? Опять занят и считаешь затею глупостью? А ведь чтобы сотворить историю нужно совсем немного: капелька поддержки на старте, чуток теории в процессе и безудержная энергия творчества, которую я помогу тебе разбудить. Или вспомнить.Мир живёт историями, и каждый может стать увлекательным рассказчиком. В этой книге я дам ответы на самые животрепещущие вопросы писателя-новичка. Эта книга для тех, кто:• Хочет писать истории, но откладывает дело в долгий ящик;• Писал раньше, но разуверился в своих силах;• Боится показаться глупым мечтателем в глазах близких;• Боится совершить ошибки;• Просто застрял и не знает, как воплотить свою идею;• Давно пишет, но не может довести до конца ни одну историю;• Не знает, как найти свою аудиторию, как с ней общаться;• Хочет почерпнуть вдохновение от общения с коллегой по писательскому делу.Эта книга написана без лишнего пафоса и с конкретными шагами на внедрение. Все, что остается, это сесть поудобнее и приступить к чтению.В формате PDF A4 сохранен издательский макет книги.

Юрий Михайлович Окунев , Юрий Окунев

Хобби и ремесла / Учебные пособия, самоучители / Дом и досуг