pub struct TypeProd {
pub first: TypeApp,
pub rest: Vec<StarType>,
}Expand description
txprod: one or more *-separated TypeApps (a product type),
or just a single one if there’s no * at all — flattened to a
Vec (the same deferred-fold technique as OpChain/PatCons)
rather than modeled as its own right-recursive rule, keeping
TypeExpr a singleton SCC.
Fields§
§first: TypeApp§rest: Vec<StarType>Trait Implementations§
Source§impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for TypeProd
impl<__SyanMacro_Atom> Parse<__SyanMacro_Atom> for TypeProd
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 TypeProd
Auto Trait Implementations§
impl Freeze for TypeProd
impl RefUnwindSafe for TypeProd
impl Send for TypeProd
impl Sync for TypeProd
impl Unpin for TypeProd
impl UnsafeUnpin for TypeProd
impl UnwindSafe for TypeProd
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