Golodnyi
спс
Sherzod
а почему name возвращает u8?
Vitaly
u8 хватит каждому (с)
Golodnyi
да это просто написал
Golodnyi
там вектор PathBuf
Латентный Бурят
Именно русское
Щас бы считать что всё русскоязычное комньюнити только в этом чате.
Anton
Щас бы считать что всё русскоязычное комньюнити только в этом чате.
Это показывает разницу между другими IT чатами.
Golodnyi
а есть че нить в расте, что поможет в такой задаче: есть структура, хранит поля 1) размер байт 2) сигнед или ансигнед значение можно ли на основе какой то мета информации, сигнед или ансигнед, динамически генерить переменную или вектор в котором правильно править данные?
Golodnyi
на сях мне тупо через if приходилось разводить такой код
Sherzod
на сях мне тупо через 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
ладно, ближе к делу. Тебе нужен 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
enum BitFieldType { Signed(i8), Unsigned(u8), Float(f32), }
ну так и чем он мне поможет?
Sherzod
если нужен сишный юнион, то да. А вот рекомендуется именно enum
доня.
я не о том
доня.
просто ты не прав
доня.
что enum в Rust это union в C++
доня.
enum → std::variant union → union
доня.
это разные вещи
Golodnyi
ну
Golodnyi
4 байта U32 например или 2 байта I16, 4 байта F32
Berkus
Есть какой-нибудь адекватный способ сконвертировать 0.1 future в 0.2 future?
я если что не шучу. присутствовал при моменте когда чуваки в репу futures пушнули 0.1.1 поверх 0.2 и сказали вот теперь норм, а 0.2 не трогайте
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 */, }
Sherzod
это разные вещи
поясни, я нихера не понял.
доня.
ну ты серьёзно не видишь разницу между tagged union и untagged union?
Berkus
Это показывает разницу между другими IT чатами.
и что там в других ит чатах, разница существует?
доня.
ну ты серьёзно не видишь разницу между tagged union и untagged union?
в одном случае за тебя тег компилятором вставляется и ты не можешь одни и те же данные по-разному интерпретировать
доня.
в другом — можешь
доня.
ну перейди ты по ссылке короче и посмотри что такое union в Rust
Stefan
а есть чат для вопросов совсем бегинерсов по расту?
доня.
ну вообще есть
доня.
в описании ссылка же
Stefan
ну судя по сдержанию глупые вопросы, типа чоита примеры из растобука не компилятся, здесь не задают :)
Stefan
о, спасибо, когда подпписывался небыло ссылки
Invictus
Почаны, может кто подсказать насчёт sha-хэшей? Использую crypto для генерации хэшей из строк. Проблема в том, что я получаю при использовании self::crypto::sha2::Sha512 на выходе строку вида a96351a6befbb7a6b552eb83398a12d5d64e2afcbcfdb2ce492f62fcd850d337254e990c5251471afc6eb035232e1fc9eeb1259234c0a67873218f5043cb314a, а хочу вида $6$yT737wAT5hTwxA1i$I.oKUJJ5ZbISbb5yjKHl2000Kv0aH3TLc3Ftg8GHseabVfrVBda1qqi6sSboZ3B9cb.h.INENvuQCAbLSfqH90.
Invictus
Т.е. такую, какая используется в /etc/shadow в linux.
Invictus
Вроде и то и то SHA-512, но формат совершенно различный.
Sherzod
Т.е. такую, какая используется в /etc/shadow в linux.
в шадов линукс комплекс хешей, я уверен в этом
Sherzod
там что-то + то-то + ша512 + еще херь какая
Sherzod
https://www.slashroot.in/how-are-passwords-stored-linux-understanding-hashing-shadow-utils
Berkus
$6$ это тип ага
Sherzod
Нет
да всё, я понял уже.
Invictus
Так, а нет какой-то либы/тулзы, которая может сгенерить хэш в таком формате?
Sherzod
Kerrigan
> access to extern crates through prelude is experimental
Kerrigan
я что-то проспал или они действительно решили починить этот ад с extern crate/mod/use?
Kerrigan
найтли выдает
Kerrigan
точно локализовать не могу - юзать незнакомые либы на расте это как забивать шурупы молотком
Маjко
Оке, поищем, спасибо.
Вообще я видел либу для etc/passwd на крейтах
Golodnyi
а могу я как то ресурсы, json файл например в бинарь вкомпилить и доставать его оттуда?
Loo
https://github.com/repi/shadertoy-browser
Mikhail
Ребят, что можете сказать про framework #Rocket? Он многопоточный? Как у него с производительностью на больших нагрузках?