The OpenNET Project / Index page

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



"Выпуск языка программирования Rust 1.66"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для слежения за появлением новых сообщений в нити, нажмите "Проследить за развитием треда".
. "Выпуск языка программирования Rust 1.66" +1 +/
Сообщение от Аноним (173), 16-Дек-22, 12:44 
Причем тут переменная и заинлайненное значение?

В расте все на порядок веселее, ведь там есть zst (zero sized types). Пустой кортеж — () гарантировано имеет размер в 0 байт. При этом, ты можешь им оперировать как обычным типом, например, создать вектор в 100 элементов из пустых кортежей. И размер этого вектора будет 100 * 0 = 0 байт (+ несколько байт переменных на длину массива, его капасити и пр.). И при этом все работает. Ты можешь по нему итерироваться, уменьшать длину, увеличивать.

У любой переменной в расте можно взять адрес. И это даже безопасная операция, просто число. И его можно взять и у zst типов. Раст просто вернет какое-то число, чтобы от него отвязались. А вот разыменование этого числа (превращение его опять в переменную) — это небезопасная операция. И если ты попробуешь адрес от zst типа преобразовать опять в переменную, то скорее всего, это будет ub, со всем вытекающим. Но можешь это делать только в unsafe блоках. Там ты сам себе буратино.

Так что, возможно, и на const  можно получить какой-то адрес. Но физического смысла в нем не будет.

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

Оглавление
Выпуск языка программирования Rust 1.66, opennews, 15-Дек-22, 23:01  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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