в чем их преимущество по сравнению с обычными типами? В доке какой-то по-моему бессмысленный пример что типа можно из хэшмапы сделать хэшсет если значение будет типом нулевого размера
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 это ()
На самом деле массивы и вектора нулевого размера не самая полезная вещь. Например, если бы мы имели инвариант, что в массиве или векторе число элементов больше нуля, то множество методов могли бы возвращать T, а не Option<T>
В том то и дело что часто нужны массивы и вектора нулевой длины
Просто Option<Vec<T>>
Обсуждают сегодня