172 похожих чатов

Enum Scheme<const BytesNum: usize> { Sha256, //

BytesNum = 32
Sha512, // BytesNum = 64
}

let example = Scheme::Sha256::<32>; // ручное создание

Кто знает, возможно ли в раст создание enum с уже захардкоженным константным дженериком?

К примеру я могу написать Scheme::Sha512::<50> и смысла от этого не будет, так как длина хэша Sha512 должна быть 64 байта

24 ответов

42 просмотра

Нельзя, возможно тебе хватит const fn bytes_num() -> usize { } в impl Scheme

wagner- Автор вопроса
Пух
Нельзя, возможно тебе хватит const fn bytes_num() ...

Блин, у меня просто идея сделать impl Scheme, в котором хочу сделать `fn get_hash_fn() -> &fn(&[u8]) -> [u8; N]

trait SchemeDispatch { type Type: Scheme; } enum Sha<const SIZE: usize> {} impl SchemeDispatch for Sha<256> { type Type = Sha256; } Но зачем?

wagner- Автор вопроса
Пух
Нельзя, возможно тебе хватит const fn bytes_num() ...

Проще говоря, функция get_hash_fn() енама Scheme должна вернуть ссылку на функцию, которая возвращает массив с хэшем той длины, которая специфична для енама

Sha256 и md5

Пух
Sha256 и md5

Ну так был бы енам Md5

Александр Ф. 🇷🇺
Ну так был бы енам Md5

Но нельзя в один тип упихать и мд5 и sha256

А надо?

wagner- Автор вопроса
Александр Ф. 🇷🇺
А надо?

Да Есть енам, в котором перечислены хеш функции (могут быть любыми). Функция этого енама должна вернуть ссылку на static функцию, которая возвращает массив N байт, где N - столько байт должна выдать выбранная хэш-функция

wagner
Да Есть енам, в котором перечислены хеш функции (...

Энумом такое сделать не получится, кажется

Можно сделать в Scheme конструкторы, которые возвращают типы с нужной длиной и приватное поле, чтобы никто не мог создать его руками

wagner- Автор вопроса
Пух
Можно сделать в Scheme конструкторы, которые возвр...

Но всё равно у тебя везде будет статика в плане длины хеша, не уверен, что есть смысл в энаме тогда

wagner- Автор вопроса
Пух
Но всё равно у тебя везде будет статика в плане дл...

Да, но это разная статика Sha256 - 32 байта Sha512 - 64 байта

wagner
Да, но это разная статика Sha256 - 32 байта Sha512...

Та я к тому что в типах особо разницы не будет между Sha256 как отдельная структура и как Scheme::Sha

wagner- Автор вопроса
Пух
Та я к тому что в типах особо разницы не будет меж...

Ладно, начну заново У меня есть строка: SCRAM-SHA-256$<iterations>:<salt>$<storedkey>:<serverkey> Она парсится структурой ScramHash: struct ScramHash { scheme: ScramScheme, iterations: usize, ... } Затем уже есть енам ScramScheme enum ScramScheme { Sha256, Sha512, Sha1, MD5 } Смысл енама ScramScheme - в том, что он отображает разные схемы строки SCRAM-SHA-256$<iterations>:<salt>$<storedkey>:<serverkey> И этот же енам, при необходимости, должен предоставить ссылку на функцию, которая возвращает выбранный хэш N длины. Длина специфична для выбранного варианта енама

wagner
Ладно, начну заново У меня есть строка: SCRAM-SH...

С дженерик параметром у тебя не получится получить из такой строки Scheme для рандомной длины хеша

Пух
С дженерик параметром у тебя не получится получить...

Или нужно только из Hash строку получить, а не наоборот?

wagner- Автор вопроса
Пух
Или нужно только из Hash строку получить, а не нао...

Всё перепуталось... Какой Hash? Какая строка? И как длина хэша может быть рандомной? Она строго регламентирована для каждой хэш функции

wagner
Всё перепуталось... Какой Hash? Какая строка? И к...

Тебе нужно строку SCRAM-SHA-256 парсить или создавать?

wagner- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта