Size: a a a

2020 November 12

JC

Julian =) Coffee in Rust Beginners
Но тогда это уже не енам
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
а как можно нормально указать что там точно всегда u8, чтобы не делать as u8?
const VALID_SIGNATURE_BYTE: u8 = 0xE1;

¯\_(ツ)_/¯
источник

SH

Stas Hehera in Rust Beginners
мда... мне надо структуру з 4ма enum и чтобы они были u8
источник

MB

Mikail Bagishov in Rust Beginners
Stas Hehera
а как можно нормально указать что там точно всегда u8, чтобы не делать as u8?
Там точно всегда u8, но неявного каста из енума в u8 нет
источник

SH

Stas Hehera in Rust Beginners
тоесть безопасно кастовать в u8  и обратно?
источник

/

/bin/cat in Rust Beginners
EnumName::Valid as u8
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
тоесть безопасно кастовать в u8  и обратно?
В u8 — безопасно, обратно — нет
источник

MB

Mikail Bagishov in Rust Beginners
Обратно - только если этот u8 действительно соответствует одному из вариантов
источник

MB

Mikail Bagishov in Rust Beginners
И это делается ансейфно, например через std::mem::transmute(x)
источник

SH

Stas Hehera in Rust Beginners
Mikail Bagishov
Обратно - только если этот u8 действительно соответствует одному из вариантов
хм... а может матчить?
источник

MB

Mikail Bagishov in Rust Beginners
Матчить тоже можно, особенно если нет гарантии что число правильное
источник

/

/bin/cat in Rust Beginners
источник

А⚙

Антон ⚙️ in Rust Beginners
Stas Hehera
хм... а может матчить?
Можно, конечно. Но тогда тебе надо будет как-то обрабатывать значения, которым не соответствуют варианты enum
источник

/

/bin/cat in Rust Beginners
Есть такой крейт
источник

SH

Stas Hehera in Rust Beginners
интересный крейт
источник

А⚙

Антон ⚙️ in Rust Beginners
источник

/

/bin/cat in Rust Beginners
Жалко, что нет крейта, который разбивает enum на отрезки и делает transmute
источник

MB

Mikail Bagishov in Rust Beginners
Теоретически это и оптимизатор может сделать
источник

/

/bin/cat in Rust Beginners
Но это только теоретически
источник

/

/bin/cat in Rust Beginners
Там же будет огромный switch
источник