mirror of
https://github.com/teloxide/teloxide.git
synced 2025-03-14 11:44:04 +01:00
Merge pull request #9 from robinhundt/master
Use FromStr in default parser
This commit is contained in:
commit
cbb1f39e7b
1 changed files with 9 additions and 3 deletions
|
@ -67,15 +67,21 @@ pub fn impl_parse_args_named(
|
|||
|
||||
fn create_parser<'a>(
|
||||
parser_type: &ParserType,
|
||||
types: impl Iterator<Item = &'a Type>,
|
||||
mut types: impl Iterator<Item = &'a Type>,
|
||||
count_args: usize,
|
||||
) -> quote::__private::TokenStream {
|
||||
let function_to_parse = match parser_type {
|
||||
ParserType::Default => match count_args {
|
||||
1 => {
|
||||
quote! { (|s: String| Ok((s,))) }
|
||||
let ty = types.next().expect("count_args != types.len()");
|
||||
quote! { (|s: String| {
|
||||
let res = <#ty>::from_str(&s)
|
||||
.map_err(|e|ParseError::IncorrectFormat({ let e: Box<dyn std::error::Error + Send + Sync + 'static> = e.into(); e }))?;
|
||||
Ok((res, ))
|
||||
})
|
||||
}
|
||||
}
|
||||
_ => quote! { compile_error!("Expected 1 argument") },
|
||||
_ => quote! { compile_error!("Expected exactly 1 argument") },
|
||||
},
|
||||
ParserType::Split { separator } => parser_with_separator(
|
||||
&separator.clone().unwrap_or_else(|| " ".to_owned()),
|
||||
|
|
Loading…
Add table
Reference in a new issue