Интересным образом оказывается, что не так уж сложно сериализовывать
Без специализации и special-casing-а.
Просто дискриминанты с uninhabited схемами не считаются.
А значит у
Option<!> в 0 байт.Без специализации и special-casing-а.
Просто дискриминанты с uninhabited схемами не считаются.
А значит у
Option<!> только 1 дискриминант None. Значит надо 0 байт на него, и на его тело тоже 0 байт.🤣2💯1👀1
Еще одно очевидное свойство
Его можно сериализовать в любую схему!
В самом деле, если мы сериализуем значение
На практике
А вот десериализовывать
Потому что эта схема не имеет представления в данных.
На практике
! типа и сериализации.Его можно сериализовать в любую схему!
В самом деле, если мы сериализуем значение
!, то как известно этот код недостижим. А значит не важно, какая там схема.На практике
! будет у варианта `enum`а, который невозможен. Значит сериализовываться будет всегда какой-то другой вариант или вообще не будет.А вот десериализовывать
! можно только из схемы !.Потому что эта схема не имеет представления в данных.
На практике
! будет у варианта схемы enum`а, которому дискриминант не назначен вовсе, а значит какие бы ни были данные, а функция десериализации ! не будет вызвана.Загадка про Rust
Что происходит с атрибутом
Что происходит с атрибутом
#[cold] над const функцией, когда её вызов вычисляется еще до LLVM?#[cold]
const fn mark_cold() {}
if condition {
mark_cold();
// Это холодный бранч или нет?
}
🤔6