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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

<p id="Разворачивание_option_с_"><strong><a l:href="#Разворачивание_option_с_">Разворачивание</a><a l:href="#Разворачивание_option_с_">Option</a><a l:href="#Разворачивание_option_с_"></a><a l:href="#Разворачивание_option_с_">с</a><a l:href="#Разворачивание_option_с_">?</a></strong></p>

Вы можете развернуть Option с использованием match, но часто проще бывает использовать оператор?. Если x - Option, то выражениеx? вернёт значение переменной, если x - Some, в противном же случае оно завершит выполнение текущей функции и вернёт None.

fn next_birthday(current_age: Option) -> Option {

// Если `current_age` == `None`, то возвращаем `None`.

// Если `current_age` == `Some`, то содержащееся в ней `u8` будет присвоено переменной `next_age`

let next_age: u8 = current_age?;

Some(format!("В следующем году мне будет {}", next_age))

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Чтобы ваш код был более читаемым, вы можете составить цепочку из нескольких ?.

struct Person {

job: Option,

}

#[derive(Clone, Copy)]

struct Job {

phone_number: Option,

}

#[derive(Clone, Copy)]

struct PhoneNumber {

area_code: Option,

number: u32,

}

impl Person {

// Получим из рабочего номера телефона код региона, если он существует.

fn work_phone_area_code(&self) -> Option {

// Мы можем не использовать оператор `?` и тогда здесь будет много вложенных операторов `match`.

// С ним кода будет больше. Попробуйте использовать в этом коде `match` и посмотрите,

// какой вариант проще.

self.job?.phone_number?.area_code

}

}

fn main() {

let p = Person {

job: Some(Job {

phone_number: Some(PhoneNumber {

area_code: Some(61),

number: 439222222,

}),

}),

};

assert_eq!(p.work_phone_area_code(), Some(61));

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

<p id="Комбинаторы_map"><strong><a l:href="#Комбинаторы_map">Комбинаторы:</a><a l:href="#Комбинаторы_map">map</a></strong></p>
Перейти на страницу:

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

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

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

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

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