У меня есть этот код:
#[derive(StructOpt)]
pub struct Opt {
/// Data stream to send to the device
#[structopt(help = "Data to send", parse(try_from_str = "parse_hex"))]
data: Vec<u8>,
}
fn parse_hex(s: &str) -> Result<u8, ParseIntError> {
u8::from_str_radix(s, 16)
}
Это работает для myexe AA BB
, но мне нужно принять myexe AABB
в качестве ввода.
Есть ли способ передать пользовательский парсерstructopt
чтобы разобрать AABB
в Vec<u8>
?Мне нужно разобрать только вторую форму (без пробела).
Я знаю, что могу сделать это в 2 шага (сохранение в String
в структуре и затем проанализировать ее, но мне нравится идея, что мой *У 1014 * есть окончательный тип для всего.
Я пробовал синтаксический анализатор следующим образом:
fn parse_hex_string(s: &str) -> Result<Vec<u8>, ParseIntError>
Макрос StructOpt
паникует из-за несоответствия типов, потому что кажется, что он производит Vec<Vec<u8>>
.