pub struct Pair<'i, R> { /* private fields */ }
Expand description
A matching pair of Token
s and everything between them.
A matching Token
pair is formed by a Token::Start
and a subsequent Token::End
with the
same Rule
, with the condition that all Token
s between them can form such pairs as well.
This is similar to the brace matching problem in
editors.
Implementations§
source§impl<'i, R: RuleType> Pair<'i, R>
impl<'i, R: RuleType> Pair<'i, R>
sourcepub fn as_rule(&self) -> R
pub fn as_rule(&self) -> R
Returns the Rule
of the Pair
.
Examples
enum Rule {
a
}
let input = "";
let pair = pest::state(input, |state| {
// generating Token pair with Rule::a ...
}).unwrap().next().unwrap();
assert_eq!(pair.as_rule(), Rule::a);
sourcepub fn as_str(&self) -> &'i str
pub fn as_str(&self) -> &'i str
Captures a slice from the &str
defined by the token Pair
.
Examples
enum Rule {
ab
}
let input = "ab";
let pair = pest::state(input, |state| {
// generating Token pair with Rule::ab ...
}).unwrap().next().unwrap();
assert_eq!(pair.as_str(), "ab");
sourcepub fn into_span(self) -> Span<'i>
👎Deprecated since 2.0.0: Please use as_span
instead
pub fn into_span(self) -> Span<'i>
as_span
insteadReturns the Span
defined by the Pair
, consuming it.
Examples
enum Rule {
ab
}
let input = "ab";
let pair = pest::state(input, |state| {
// generating Token pair with Rule::ab ...
}).unwrap().next().unwrap();
assert_eq!(pair.into_span().as_str(), "ab");
sourcepub fn as_span(&self) -> Span<'i>
pub fn as_span(&self) -> Span<'i>
Returns the Span
defined by the Pair
, without consuming it.
Examples
enum Rule {
ab
}
let input = "ab";
let pair = pest::state(input, |state| {
// generating Token pair with Rule::ab ...
}).unwrap().next().unwrap();
assert_eq!(pair.as_span().as_str(), "ab");
sourcepub fn into_inner(self) -> Pairs<'i, R> ⓘ
pub fn into_inner(self) -> Pairs<'i, R> ⓘ
Returns the inner Pairs
between the Pair
, consuming it.
Examples
enum Rule {
a
}
let input = "";
let pair = pest::state(input, |state| {
// generating Token pair with Rule::a ...
}).unwrap().next().unwrap();
assert!(pair.into_inner().next().is_none());
sourcepub fn tokens(self) -> Tokens<'i, R> ⓘ
pub fn tokens(self) -> Tokens<'i, R> ⓘ
Returns the Tokens
for the Pair
.
Examples
enum Rule {
a
}
let input = "";
let pair = pest::state(input, |state| {
// generating Token pair with Rule::a ...
}).unwrap().next().unwrap();
let tokens: Vec<_> = pair.tokens().collect();
assert_eq!(tokens.len(), 2);