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

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

BytesNum = 32
Sha512, // BytesNum = 64
}

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

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

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

24 ответов

39 просмотров

Нельзя, возможно тебе хватит 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- Автор вопроса

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта