我有这个代码:
#[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>
? 我只需要解析第二种形式(没有空格)。
我知道我可以分两步完成(存储到String
结构中的 a 然后解析它,但我喜欢我Opt
的所有东西都有最终类型的想法。
我尝试了这样的解析器:
fn parse_hex_string(s: &str) -> Result<Vec<u8>, ParseIntError>
宏对类型不匹配感到恐慌,StructOpt
因为它似乎会产生一个Vec<Vec<u8>>
.