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
sourceimpl<'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>
Please use as_span
instead
Returns 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>ⓘNotable traits for Pairs<'i, R>impl<'i, R: RuleType> Iterator for Pairs<'i, R> type Item = Pair<'i, R>;
pub fn into_inner(self) -> Pairs<'i, R>ⓘNotable traits for Pairs<'i, R>impl<'i, R: RuleType> Iterator for Pairs<'i, R> type Item = Pair<'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>ⓘNotable traits for Tokens<'i, R>impl<'i, R: RuleType> Iterator for Tokens<'i, R> type Item = Token<'i, R>;
pub fn tokens(self) -> Tokens<'i, R>ⓘNotable traits for Tokens<'i, R>impl<'i, R: RuleType> Iterator for Tokens<'i, R> type Item = Token<'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);
Trait Implementations
impl<'i, R: Eq> Eq for Pair<'i, R>
Auto Trait Implementations
impl<'i, R> RefUnwindSafe for Pair<'i, R> where
R: RefUnwindSafe,
impl<'i, R> !Send for Pair<'i, R>
impl<'i, R> !Sync for Pair<'i, R>
impl<'i, R> Unpin for Pair<'i, R>
impl<'i, R> UnwindSafe for Pair<'i, R> where
R: RefUnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more