что ввел пользователь(pkcs7, zero)
думал прокатит такое решение, но видимо нельзя так делать
use block_modes::block_padding::{Padding, Pkcs7, ZeroPadding};
let padding: Padding = match padding.as_str() {
"pkcs7" => Pkcs7,
"zero" => ZeroPadding,
};
не писать же под каждый паддинг разные функции?
Box<dyn Padding> может хранить? Трейт - это не тип, поэтому переменную с таким типом завести не получится. Но можно сохранить объект, реализующий трейт в виде трейт-объекта
возможно, хватит просто &dyn Padding, в зависимости от дальнейшего использования
the trait `Padding` cannot be made into an object, или как-то по особенному нужно?
когда трейт не object-safe про это есть в растбуке https://doc.rust-lang.org/book/ch17-02-trait-objects.html#object-safety-is-required-for-trait-objects
а, точно. спасибо)
не строки положить в Enum, а те штуки, которые имплементируют паддинг
и реализовать потом match
Обсуждают сегодня