Skip to content

Commit b66ff43

Browse files
Gealepage
andauthored
fix(bits): Accept Parser, not parser-like functions (#1599)
Co-authored-by: Ed Page <[email protected]>
1 parent 326344a commit b66ff43

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/bits/mod.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pub mod complete;
55
pub mod streaming;
66

77
use crate::error::{ErrorKind, ParseError};
8-
use crate::internal::{Err, IResult, Needed};
8+
use crate::internal::{Err, IResult, Needed, Parser};
99
use crate::lib::std::ops::RangeFrom;
1010
use crate::traits::{ErrorConvert, Slice};
1111

@@ -42,9 +42,9 @@ where
4242
E1: ParseError<(I, usize)> + ErrorConvert<E2>,
4343
E2: ParseError<I>,
4444
I: Slice<RangeFrom<usize>>,
45-
P: FnMut((I, usize)) -> IResult<(I, usize), O, E1>,
45+
P: Parser<(I, usize), O, E1>,
4646
{
47-
move |input: I| match parser((input, 0)) {
47+
move |input: I| match parser.parse((input, 0)) {
4848
Ok(((rest, offset), result)) => {
4949
// If the next byte has been partially read, it will be sliced away as well.
5050
// The parser functions might already slice away all fully read bytes.
@@ -88,7 +88,7 @@ where
8888
E1: ParseError<I> + ErrorConvert<E2>,
8989
E2: ParseError<(I, usize)>,
9090
I: Slice<RangeFrom<usize>> + Clone,
91-
P: FnMut(I) -> IResult<I, O, E1>,
91+
P: Parser<I, O, E1>,
9292
{
9393
move |(input, offset): (I, usize)| {
9494
let inner = if offset % 8 != 0 {
@@ -97,7 +97,7 @@ where
9797
input.slice((offset / 8)..)
9898
};
9999
let i = (input, offset);
100-
match parser(inner) {
100+
match parser.parse(inner) {
101101
Ok((rest, res)) => Ok(((rest, 0), res)),
102102
Err(Err::Incomplete(Needed::Unknown)) => Err(Err::Incomplete(Needed::Unknown)),
103103
Err(Err::Incomplete(Needed::Size(sz))) => Err(match sz.get().checked_mul(8) {

0 commit comments

Comments
 (0)