Trait rustc_ap_rustc_ast::ast_like::AstLike [−][src]
pub trait AstLike: Sized + Debug { const SUPPORTS_CUSTOM_INNER_ATTRS: bool; fn attrs(&self) -> &[Attribute]; fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>)); fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>; }
Expand description
An AstLike represents an AST node (or some wrapper around
and AST node) which stores some combination of attributes
and tokens.
Associated Constants
const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]This is true if this AstLike might support ‘custom’ (proc-macro) inner
attributes. Attributes like #![cfg] and #![cfg_attr] are not
considered ‘custom’ attributes
If this is false, then this AstLike definitely does
not support ‘custom’ inner attributes, which enables some optimizations
during token collection.
Required methods
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
Implementations on Foreign Types
impl<T: AstLike> AstLike for Option<T>[src]
impl<T: AstLike> AstLike for Option<T>[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
Implementors
impl AstLike for StmtKind[src]
impl AstLike for StmtKind[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Nonterminal[src]
impl AstLike for Nonterminal[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Arm[src]
impl AstLike for Arm[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for AttrItem[src]
impl AstLike for AttrItem[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Attribute[src]
impl AstLike for Attribute[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Block[src]
impl AstLike for Block[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Expr[src]
impl AstLike for Expr[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for ExprField[src]
impl AstLike for ExprField[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for FieldDef[src]
impl AstLike for FieldDef[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for GenericParam[src]
impl AstLike for GenericParam[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Item[src]
impl AstLike for Item[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Local[src]
impl AstLike for Local[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for MacCallStmt[src]
impl AstLike for MacCallStmt[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Param[src]
impl AstLike for Param[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Pat[src]
impl AstLike for Pat[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for PatField[src]
impl AstLike for PatField[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Path[src]
impl AstLike for Path[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Stmt[src]
impl AstLike for Stmt[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Ty[src]
impl AstLike for Ty[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Variant[src]
impl AstLike for Variant[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for Visibility[src]
impl AstLike for Visibility[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, _f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for AssocItem[src]
impl AstLike for AssocItem[src]const SUPPORTS_CUSTOM_INNER_ATTRS: bool[src]
fn attrs(&self) -> &[Attribute][src]
fn visit_attrs(&mut self, f: impl FnOnce(&mut Vec<Attribute>))[src]
fn tokens_mut(&mut self) -> Option<&mut Option<LazyTokenStream>>[src]
impl AstLike for ForeignItem[src]
impl AstLike for ForeignItem[src]