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

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

BytesNum = 32
Sha512, // BytesNum = 64
}

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

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

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

24 ответов

16 просмотров

Нельзя, возможно тебе хватит 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 должна вернуть ссылку на функцию, которая возвращает массив с хэшем той длины, которая специфична для енама

Nero-sama 🇷🇺
trait SchemeDispatch { type Type: Scheme; } enum...

Ну потом обращаешься как Sha<256>::Type

Sha256 и md5

Пух
Sha256 и md5

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

Nero-sama 🇷🇺
Ну так был бы енам Md5

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

А надо?

wagner- Автор вопроса
Nero-sama 🇷🇺
А надо?

Да Есть енам, в котором перечислены хеш функции (могут быть любыми). Функция этого енама должна вернуть ссылку на 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- Автор вопроса

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
I just installed it but how do I use it?
Talula
12
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
я не про это. какая еще есть инфа, или может появиться, что ее можно обозначить названием данной игры? зачем плодить хештеги, которые обозначают одну сущность? в данном случ...
Aiwan \ (•◡•) / _bot
5
Карта сайта