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

// Таким образом, вызов замыкания изменяет его, что недопустимо без `mut`.

let mut inc = || {

count += 1;

println!("`count`: {}", count);

};

// Вызываем замыкание, использующее изменяемое заимствование.

inc();

// Замыкание продолжает изменяемо заимствовать `count` так как оно используется дальше.

// Попытка перезанять приведёт к ошибке.

// let _reborrow = &count

// ^ TODO: попробуйте раскомментировать эту строку.

inc();

// Замыкание больше не заимствует `&mut count`. Так что теперь

// при перезаимствовании ошибок не будет.

let _count_reborrowed = &mut count;

// Некопируемый тип.

let movable = Box::new(3);

// `mem::drop` требует `T`, так что захват производится по значению.

// Копируемый тип будет скопирован в замыкание, оставив оригинальное

// значение без изменения. Некопируемый тип должен быть перемещён, так что

// movable` немедленно перемещается в замыкание.

let consume = || {

println!("`movable`: {:?}", movable);

mem::drop(movable);

};

// `consume` поглощает переменную, так что оно может быть вызвано только один раз.

consume();

// consume();

// ^ TODO: Попробуйте раскомментировать эту строку.

}

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

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Использование move перед вертикальными линиями позволяет получить владение над захваченными переменными:

fn main() {

// Vec` не поддерживает копирование.

let haystack = vec![1, 2, 3];

let contains = move |needle| haystack.contains(needle);

println!("{}", contains(&1));

println!("{}", contains(&4));

// println!("Количество элементов {} в векторе", haystack.len());

// ^ Уберите комментарий с этой строки и в результате получите ошибку компиляции,

// потому что анализатор заимствований не позволяет использовать

// переменную после передачи владения.

// Удалите `move` у замыкания и _haystack_ будет заимствован по неизменяемой

// ссылке, и удалённый комментарий теперь не вызывает ошибки.

}

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

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

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

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

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

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

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

Все жанры