172 похожих чатов

Кто нибудь может объяснить зачем zero sized types нужны и

в чем их преимущество по сравнению с обычными типами? В доке какой-то по-моему бессмысленный пример что типа можно из хэшмапы сделать хэшсет если значение будет типом нулевого размера

7 ответов

20 просмотров

http://webcache.googleusercontent.com/search?q=cache:xjqZ2MQWZ5YJ:https://www.hardmo.de/article/2021-03-14-zst-proof-types.md&hl=ru&gl=ru&strip=1&vwsrc=0

А в чём бессмысленность получения сета из мапы?

Ну а вообще, типы нулевого размера довольно естественная вещь. Например есть у тебя массив [u32; 0] сколько он должен занимать байт? Логично что 0. Или тип функции, которая ничего не возвращает, но формально всё равно нужно определить её тип. Тогда пусть это будет значение нулевого размера. А с практической точки зрения их можно использовать в обобщенном коде. Например если тебе где-то нужно вернуть Result<T, Error>, но твоя операция не возвращает никакое значение. Тогда ты просто указываешь что T это ()

Nano
Ну а вообще, типы нулевого размера довольно естест...

На самом деле массивы и вектора нулевого размера не самая полезная вещь. Например, если бы мы имели инвариант, что в массиве или векторе число элементов больше нуля, то множество методов могли бы возвращать T, а не Option<T>

Василий Требунцов
На самом деле массивы и вектора нулевого размера н...

В том то и дело что часто нужны массивы и вектора нулевой длины

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта