pub struct AppExpr {
pub minus: Option<ExactMinusTok>,
pub stage: Option<StagePrefix>,
pub excl: Option<UnopExclamTok>,
pub head: Atomic,
pub head_accesses: Vec<AccessSeg>,
pub args: Vec<AppArg>,
}Expand description
nxun/nxapp/nxunsub flattened: an optional leading unary minus,
an optional leading !/!!/… deref (UNOP_EXCLAM, nxunsub), an
atomic head with any #label field accesses (nxbot ACCESS var,
left-recursive in parser.mly — flattened to a postfix Vec here,
the same technique as PatCons’s ::), and an application-chain
tail (nxapp nxunsub / nxapp CONSTRUCTOR / nxapp OPTIONAL nxunsub / nxapp OMISSION, left-folded during elaboration).
EXACT_AMP/EXACT_TILDE (&/~) are the
staging prefixes, carried in stage (see StagePrefix). First-class command references (command \cmd,
upstream’s nxapp: COMMAND hcmd) are modeled one level down, as
Atomic::Command — see its doc comment for the rationale.
Fields§
§minus: Option<ExactMinusTok>§stage: Option<StagePrefix>§excl: Option<UnopExclamTok>§head: Atomic§head_accesses: Vec<AccessSeg>§args: Vec<AppArg>Trait Implementations§
Source§impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for AppExpr
impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for AppExpr
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 AppExpr
Auto Trait Implementations§
impl Freeze for AppExpr
impl RefUnwindSafe for AppExpr
impl Send for AppExpr
impl Sync for AppExpr
impl Unpin for AppExpr
impl UnsafeUnpin for AppExpr
impl UnwindSafe for AppExpr
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