pub struct OpChain {
pub head: AppExpr,
pub tail: Vec<OpRhs>,
}Expand description
A flattened binary-operator chain: head (op rhs)*, left-folded
(with correct per-operator precedence/associativity) during
elaboration — see crate::cst::ast::OpChain’s doc comment.
Delta: no before postfix field — 0.1 has no BEFORE token at
all (confirmed by grep of parser_v1.mly), so
crate::cst::ast::OpChain::before simply has no 0.1 counterpart.
Fields§
§head: AppExpr§tail: Vec<OpRhs>Trait Implementations§
Source§impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for OpChain
impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for OpChain
Source§type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>
type Error = ParseError<<__SyanMacro_Atom as Spanned>::Span>
Every error must be convertible to the universal one, so a field’s failure can become the
enclosing type’s failure with no per-field where-predicate. Stating it HERE rather than at
each derived impl is what keeps it out of the obligation graph: a per-field
<FieldTy as Parse<Atom>>::Error: Into<…> predicate re-creates a projection cycle on a
recursive field (E0275), which decycle’s bound-peeling does not break.Source§fn parse_stream<__SyanMacro_S: ParseStream<Atom = __SyanMacro_Atom>>(
__syan_stream: &mut __SyanMacro_S,
) -> Result<Self, Self::Error>
fn parse_stream<__SyanMacro_S: ParseStream<Atom = __SyanMacro_Atom>>( __syan_stream: &mut __SyanMacro_S, ) -> Result<Self, Self::Error>
Parse from a reborrowable stream. Read more
impl StructuralPartialEq for OpChain
Auto Trait Implementations§
impl Freeze for OpChain
impl RefUnwindSafe for OpChain
impl Send for OpChain
impl Sync for OpChain
impl Unpin for OpChain
impl UnsafeUnpin for OpChain
impl UnwindSafe for OpChain
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more