Function take
fn take<UsizeLike, Input, Error>(token_count: UsizeLike) -> impl Parser<Input, <Input as Stream>::Slice, Error>
where
Input: StreamIsPartial + Stream,
UsizeLike: ToUsize,
Error: ParserError<Input>
Recognize an input slice containing the first N input elements (I[..N]).
Complete version: It will return Err(ErrMode::Backtrack(_)) if the input is shorter than the argument.
[Partial version][crate::_topic::partial]: if the input has less than N elements, take will
return a ErrMode::Incomplete(Needed::new(M)) where M is the number of
additional bytes the parser would need to succeed.
It is well defined for &[u8] as the number of elements is the byte size,
but for types like &str, we cannot know how many bytes correspond for
the next few chars, so the result will be ErrMode::Incomplete(Needed::Unknown)
Effective Signature
Assuming you are parsing a &str [Stream] with 0.. or 1.. ranges:
# use RangeFrom;
# use *;
# use ContainsToken;
# use ContextError;
#
Example
# use ;
# use *;
use take;
assert_eq!;
assert_eq!;
assert!;
assert!;
The units that are taken will depend on the input type. For example, for a
&str it will take a number of char's, whereas for a &[u8] it will
take that many u8's:
# use *;
use ContextError;
use take;
assert_eq!;
assert_eq!;
# use *;
# use ;
# use Partial;
use take;
assert_eq!;
assert_eq!;
// `Unknown` as we don't know the number of bytes that `count` corresponds to
assert_eq!;