Golodnyi
спс
Sherzod
а почему name возвращает u8?
Vitaly
u8 хватит каждому (с)
Golodnyi
да это просто написал
Golodnyi
там вектор PathBuf
Anton
Латентный Бурят
Именно русское
Щас бы считать что всё русскоязычное комньюнити только в этом чате.
Anton
Golodnyi
а есть че нить в расте, что поможет в такой задаче:
есть структура, хранит поля
1) размер байт
2) сигнед или ансигнед значение
можно ли на основе какой то мета информации, сигнед или ансигнед, динамически генерить переменную или вектор в котором правильно править данные?
Golodnyi
на сях мне тупо через if приходилось разводить такой код
Golodnyi
есть бинарный протокол, у него есть битфилд, который описывает кол-во полей, их размер и их характеристуку (signed int, unsigned int, float)
этот битфилд разворачивается в вектор структуры
const SIGNED: u8 = 0;
const UNSIGNED: u8 = 1;
const FLOAT: u8 = 2;
struct Bitfield {
size: u8,
character: u8
}
...
let bitfield: Vec<Bitfield>
я в итоге бегу циклом
for (item in bitfield) {
let data = read(item.size);
// и тут я должен на основе item.character принять решение какую переменную создать или какой union применить, не хочу писать кучу if else, мб мета программирование какое существует?
}
Golodnyi
там может быть u32, u16, u8, i32, i16, i8, float
Golodnyi
в пхп и питоне есть функции обертки, там на вход подаешь размер и эту характеристику переменной и он тебе отдает правильно декодированные данные, там это за счет отсутствия статической типизации сделано
Golodnyi
в расте вроде как тоже тип может определиться при инициализации, мб аналогичные функции есть?
Sherzod
Sherzod
ладно, ближе к делу. Тебе нужен enum
Sherzod
enum BitFieldType {
Signed(i8),
Unsigned(u8),
Float(f32),
}
Sherzod
enum в расте это что-то похожее на union в спп
доня.
std::variant
доня.
union в C++ он и в Rust union
Sherzod
https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_(%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
доня.
https://doc.rust-lang.org/reference/items/unions.html
доня.
та в C++ вообще никакого единого нейминг конвеншона
доня.
это раздражает очень
Golodnyi
Sherzod
Sherzod
если нужен сишный юнион, то да. А вот рекомендуется именно enum
доня.
я не о том
доня.
просто ты не прав
доня.
что enum в Rust это union в C++
доня.
enum → std::variant
union → union
доня.
это разные вещи
Berkus
Golodnyi
ну
Golodnyi
4 байта U32 например или 2 байта I16, 4 байта F32
Berkus
это wip для мержа async в core, писать на нем не надо, 0.3 будет
Golodnyi
и чем она мне поможет?
Sherzod
ну так и чем он мне поможет?
с таким энумом, тебе не нужен будет size параметер:
let siga = BitFieldType::Signed(-1i8);
match siga {
BitFieldType::Signed(s) => /* сделать что-то с s */,
BitFieldType::Unsigned(u) => /* сделать что-то с u */,
BitFieldType::Float(f) => /* сделать что-то с f */,
}
доня.
ну ты серьёзно не видишь разницу между tagged union и untagged union?
Латентный Бурят
доня.
в другом — можешь
доня.
ну перейди ты по ссылке короче и посмотри что такое union в Rust
Sherzod
Stefan
а есть чат для вопросов совсем бегинерсов по расту?
Berkus
доня.
ну вообще есть
доня.
в описании ссылка же
Stefan
ну судя по сдержанию глупые вопросы, типа чоита примеры из растобука не компилятся, здесь не задают :)
Stefan
о, спасибо, когда подпписывался небыло ссылки
Invictus
Почаны, может кто подсказать насчёт sha-хэшей? Использую crypto для генерации хэшей из строк. Проблема в том, что я получаю при использовании self::crypto::sha2::Sha512 на выходе строку вида a96351a6befbb7a6b552eb83398a12d5d64e2afcbcfdb2ce492f62fcd850d337254e990c5251471afc6eb035232e1fc9eeb1259234c0a67873218f5043cb314a, а хочу вида $6$yT737wAT5hTwxA1i$I.oKUJJ5ZbISbb5yjKHl2000Kv0aH3TLc3Ftg8GHseabVfrVBda1qqi6sSboZ3B9cb.h.INENvuQCAbLSfqH90.
Invictus
Т.е. такую, какая используется в /etc/shadow в linux.
Invictus
Вроде и то и то SHA-512, но формат совершенно различный.
Sherzod
Sherzod
там что-то + то-то + ша512 + еще херь какая
Nikita
Sherzod
https://www.slashroot.in/how-are-passwords-stored-linux-understanding-hashing-shadow-utils
Berkus
$6$ это тип ага
Маjко
Sherzod
Invictus
Так, а нет какой-то либы/тулзы, которая может сгенерить хэш в таком формате?
Sherzod
Kerrigan
> access to extern crates through prelude is experimental
Kerrigan
я что-то проспал или они действительно решили починить этот ад с extern crate/mod/use?
Nikita
Kerrigan
найтли выдает
Kerrigan
точно локализовать не могу - юзать незнакомые либы на расте это как забивать шурупы молотком
Invictus
Golodnyi
а могу я как то ресурсы, json файл например в бинарь вкомпилить и доставать его оттуда?
Nikita
Filipp
Invictus
Anonymous
Loo
https://github.com/repi/shadertoy-browser
Mikhail
Ребят, что можете сказать про framework #Rocket? Он многопоточный? Как у него с производительностью на больших нагрузках?