The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск языка программирования Rust 1.58"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Выпуск языка программирования Rust 1.58" +1 +/
Сообщение от Аноним (164), 14-Янв-22, 22:44 
Тут проще написано если хочешь понять, хоть и длиннее https://habr.com/ru/post/350372/

Можно и так сказать - в расте реализованы афинные типы. Что это значит на практике:
    let mut f = File::create("foo.txt")?;
    f.write(b"some bytes")?;
    drop(f); // Освободить объект f
    f.write(b"some bytes")?; // Тут будет ошибка на стадии компиляции
т.е. это поведение ты получаешь для всех типов в т.ч. и пользовательских. Без проверок в рантайме, без дополнительного оверхеда, уже на стадии компиляции.

f также будет освобождено если выйдет за пределы видимости:
    {
         let mut f = File::create("foo.txt")?;
         f.write(b"some bytes")?;
    } // После блока f будет освобождено
    f.write(b"some bytes")?; // Тут будет ошибка на стадии компиляции

Также нельзя например по ошибке дважды закрыть файл.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Rust 1.58, opennews, 14-Янв-22, 10:42  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру