mirror of
https://github.com/crate-ci/typos.git
synced 2025-02-13 08:40:29 -05:00
perf: Remove ErrMode overhead
This commit is contained in:
parent
60452b5a81
commit
ba04a1a0fd
1 changed files with 23 additions and 21 deletions
|
@ -140,12 +140,13 @@ mod parser {
|
|||
use winnow::stream::Stream;
|
||||
use winnow::stream::StreamIsPartial;
|
||||
use winnow::token::{one_of, take_while};
|
||||
use winnow::Result;
|
||||
|
||||
/// Avoid worst-case parse times by limiting how much a `take_while` can take if something
|
||||
/// later may cause it to fail.
|
||||
const NON_TERMINATING_CAP: usize = 1024;
|
||||
|
||||
pub(crate) fn next_identifier<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
pub(crate) fn next_identifier<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -155,7 +156,7 @@ mod parser {
|
|||
preceded(ignore, identifier).parse_next(input)
|
||||
}
|
||||
|
||||
fn identifier<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn identifier<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -173,7 +174,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn ignore<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn ignore<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -204,7 +205,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn sep1<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn sep1<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -217,7 +218,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn other<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn other<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -234,7 +235,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn ordinal_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn ordinal_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -260,7 +261,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn dec_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn dec_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -269,7 +270,7 @@ mod parser {
|
|||
trace("dec_literal", take_while(1.., is_dec_digit_with_sep)).parse_next(input)
|
||||
}
|
||||
|
||||
fn hex_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn hex_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -281,7 +282,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn css_color<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn css_color<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -302,7 +303,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn jwt<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn jwt<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -337,7 +338,7 @@ mod parser {
|
|||
|| c == '-'
|
||||
}
|
||||
|
||||
fn uuid_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn uuid_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -375,7 +376,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn hash_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn hash_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -401,7 +402,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn base64_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn base64_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -425,7 +426,8 @@ mod parser {
|
|||
.iter()
|
||||
.all(|c| !['/', '+'].contains(&c.as_char()))
|
||||
{
|
||||
return Err(winnow::error::ErrMode::from_input(input));
|
||||
#[allow(clippy::unit_arg)]
|
||||
return Err(ParserError::from_input(input));
|
||||
}
|
||||
|
||||
take_while(padding_len..=padding_len, is_base64_padding).parse_next(input)?;
|
||||
|
@ -437,7 +439,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn email_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn email_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -456,7 +458,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn url_literal<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn url_literal<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -489,7 +491,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn url_userinfo<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn url_userinfo<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -507,7 +509,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn c_escape<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn c_escape<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
<T as Stream>::Slice: AsBStr + SliceLen + Default,
|
||||
|
@ -528,7 +530,7 @@ mod parser {
|
|||
.parse_next(input)
|
||||
}
|
||||
|
||||
fn printf<T>(input: &mut T) -> ModalResult<<T as Stream>::Slice, ()>
|
||||
fn printf<T>(input: &mut T) -> Result<<T as Stream>::Slice, ()>
|
||||
where
|
||||
T: Compare<char>,
|
||||
T: Stream + StreamIsPartial + PartialEq,
|
||||
|
@ -538,10 +540,10 @@ mod parser {
|
|||
trace("printf", ('%', take_while(1.., is_xid_continue)).take()).parse_next(input)
|
||||
}
|
||||
|
||||
fn take_many0<I, E, F>(mut f: F) -> impl ModalParser<I, <I as Stream>::Slice, E>
|
||||
fn take_many0<I, E, F>(mut f: F) -> impl Parser<I, <I as Stream>::Slice, E>
|
||||
where
|
||||
I: Stream,
|
||||
F: ModalParser<I, <I as Stream>::Slice, E>,
|
||||
F: Parser<I, <I as Stream>::Slice, E>,
|
||||
E: ParserError<I>,
|
||||
{
|
||||
move |i: &mut I| repeat(0.., f.by_ref()).map(|()| ()).take().parse_next(i)
|
||||
|
|
Loading…
Add table
Reference in a new issue