Trait HasSpan

Source
pub trait HasSpan<'ast>: Sealed {
    // Required method
    fn span(&self) -> &Span<'ast>;
}
Expand description

A trait for types, that provide a Span. It is implemented for all AST nodes, Span itself, and for references to them as well.

This gives you the ability to invoke functions that take impl HasSpan in many different ways. Just choose the one that fits your use case the best.


fn takes_span<'ast>(span: impl HasSpan<'ast>) {
    let span: &Span<'ast> = span.span();
    // ...
}

fn visit_expr(expr: ExprKind<'_>) {
    takes_span(expr);
    takes_span(&expr);
    takes_span(expr.span());
    takes_span(&expr.span());
}

Required Methods§

Source

fn span(&self) -> &Span<'ast>

This returns the Span of the implementing AST node.

Implementations on Foreign Types§

Source§

impl<'ast, N: HasSpan<'ast>> HasSpan<'ast> for &N

Source§

fn span(&self) -> &Span<'ast>

Implementors§

Source§

impl<'ast> HasSpan<'ast> for AssocItemKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for ExprKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for ExternItemKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for ItemKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for LitExprKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for StmtKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for TyKind<'ast>

Source§

impl<'ast> HasSpan<'ast> for ArrayExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for ArrayTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for AsExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for AssignExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for AwaitExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for BinaryOpExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for BlockExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for BoolLitExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for BoolTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for BreakExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for CallExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for CharLitExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for ClosureExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for ClosureParam<'ast>

Source§

impl<'ast> HasSpan<'ast> for ConstItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for ContinueExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for CtorExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for EnumItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for EnumVariant<'ast>

Source§

impl<'ast> HasSpan<'ast> for ExprStmt<'ast>

Source§

impl<'ast> HasSpan<'ast> for ExternBlockItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for ExternCrateItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for FieldExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for FloatLitExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for FnItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for FnParam<'ast>

Source§

impl<'ast> HasSpan<'ast> for FnPtrTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for FnTyParameter<'ast>

Source§

impl<'ast> HasSpan<'ast> for ForExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for IfExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for ImplItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for ImplTraitTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for IndexExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for InferredTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for IntLitExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for ItemField<'ast>

Source§

impl<'ast> HasSpan<'ast> for ItemStmt<'ast>

Source§

impl<'ast> HasSpan<'ast> for LetExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for LetStmt<'ast>

Source§

impl<'ast> HasSpan<'ast> for LoopExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for MatchExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for MethodExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for ModItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for NeverTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for NumTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for PathExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for PathTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for RangeExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for RawPtrTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for RefExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for RefTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for ReturnExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for SliceTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for StaticItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for StrLitExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for StructFieldPat<'ast>

Source§

impl<'ast> HasSpan<'ast> for StructItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for TextTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for TraitItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for TraitObjTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for TryExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for TupleExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for TupleTy<'ast>

Source§

impl<'ast> HasSpan<'ast> for TyAliasItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for UnaryOpExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for UnionItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for UnstableExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for UnstableItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for UseItem<'ast>

Source§

impl<'ast> HasSpan<'ast> for WhileExpr<'ast>

Source§

impl<'ast> HasSpan<'ast> for Ident<'ast>

Source§

impl<'ast> HasSpan<'ast> for Span<'ast>