The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Rust 1.57"
Отправлено Ordu, 03-Дек-21 21:52 
> Пятница. Вечер.. Наверное поэтому мы не понимаем друг друга.
> Что в С, что в C++ облом на стадии компиляции организовывается через
> static_assert()

А, да, я проглядел. Но это не растовый подход. Заводить второй assert, когда можно не заводить? Зачем?

> Размер типа по указателю это банальный sizeof(*ptr), если ptr не на void

А, ну да, можно проще.

> я НЕ понимаю зачем в Русте сохранение при ассерте в переменную. Вернее,
> понимаю это как хак над assert, который работает в рантайме. А,
> если сохранять в const, то сработает во время компиляции.

Это не хак. Если я пишу:

const KEYWORDS = {
    let mut keywords = HashMap::new();
    // populate keywords
    keywords
};

То блок кода будет выполнен в компайл-тайме, и хеш-табличка будет лежать на старте программы в _созданном_ виде в KEYWORDS. (Впрочем, конкретно этот пример, я подозреваю не сработает, потому что HashMap требует аллокаций памяти, и их статически выполнять не удастся, но есть phf, он может.).

Почему бы не использовать то же самое, для выполнение assert'а? Зачем заводить специальный assert, если язык и так позволяет вызывать существующий assert в компайл-тайме? Не, если _тебе_ это зачем-то надо, ты можешь написать свой собственный макрос static_assert, который будет работать так, как тебе хочется.

> Необдуманно я пообещал Прохожему не угорать на Рустом. Забейте. Это мой искромётный
> юмор

Слава богу. Я очень рад, что ты передумал. Мои усилия прошли не даром.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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