src/tools/rust-analyzer/crates/syntax/src/ast/generated/nodes.rs RUST 11,048 lines View on github.com → Search inside
File is large — showing lines 1–2,000 of 11,048.
1//! Generated by `cargo xtask codegen grammar`, do not edit by hand.23#![allow(non_snake_case)]4use crate::{5    SyntaxKind::{self, *},6    SyntaxNode, SyntaxToken, T,7    ast::{self, AstChildren, AstNode, support},8};9use std::{fmt, hash};10pub struct Abi {11    pub(crate) syntax: SyntaxNode,12}13impl Abi {14    #[inline]15    pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }16    #[inline]17    pub fn string_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![string]) }18}19pub struct ArgList {20    pub(crate) syntax: SyntaxNode,21}22impl ArgList {23    #[inline]24    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }25    #[inline]26    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }27}28pub struct ArrayExpr {29    pub(crate) syntax: SyntaxNode,30}31impl ast::HasAttrs for ArrayExpr {}32impl ArrayExpr {33    #[inline]34    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }35    #[inline]36    pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) }37    #[inline]38    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }39    #[inline]40    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }41    #[inline]42    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }43}44pub struct ArrayType {45    pub(crate) syntax: SyntaxNode,46}47impl ArrayType {48    #[inline]49    pub fn const_arg(&self) -> Option<ConstArg> { support::child(&self.syntax) }50    #[inline]51    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }52    #[inline]53    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }54    #[inline]55    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }56    #[inline]57    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }58}59pub struct AsmClobberAbi {60    pub(crate) syntax: SyntaxNode,61}62impl ast::HasAttrs for AsmClobberAbi {}63impl AsmClobberAbi {64    #[inline]65    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }66    #[inline]67    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }68    #[inline]69    pub fn clobber_abi_token(&self) -> Option<SyntaxToken> {70        support::token(&self.syntax, T![clobber_abi])71    }72    #[inline]73    pub fn string_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![string]) }74}75pub struct AsmConst {76    pub(crate) syntax: SyntaxNode,77}78impl AsmConst {79    #[inline]80    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }81    #[inline]82    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }83}84pub struct AsmDirSpec {85    pub(crate) syntax: SyntaxNode,86}87impl AsmDirSpec {88    #[inline]89    pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }90    #[inline]91    pub fn inlateout_token(&self) -> Option<SyntaxToken> {92        support::token(&self.syntax, T![inlateout])93    }94    #[inline]95    pub fn inout_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![inout]) }96    #[inline]97    pub fn lateout_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![lateout]) }98    #[inline]99    pub fn out_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![out]) }100}101pub struct AsmExpr {102    pub(crate) syntax: SyntaxNode,103}104impl ast::HasAttrs for AsmExpr {}105impl AsmExpr {106    #[inline]107    pub fn asm_pieces(&self) -> AstChildren<AsmPiece> { support::children(&self.syntax) }108    #[inline]109    pub fn template(&self) -> AstChildren<Expr> { support::children(&self.syntax) }110    #[inline]111    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }112    #[inline]113    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }114    #[inline]115    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }116    #[inline]117    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }118    #[inline]119    pub fn asm_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![asm]) }120    #[inline]121    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }122    #[inline]123    pub fn global_asm_token(&self) -> Option<SyntaxToken> {124        support::token(&self.syntax, T![global_asm])125    }126    #[inline]127    pub fn naked_asm_token(&self) -> Option<SyntaxToken> {128        support::token(&self.syntax, T![naked_asm])129    }130}131pub struct AsmLabel {132    pub(crate) syntax: SyntaxNode,133}134impl AsmLabel {135    #[inline]136    pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) }137    #[inline]138    pub fn label_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![label]) }139}140pub struct AsmOperandExpr {141    pub(crate) syntax: SyntaxNode,142}143impl AsmOperandExpr {144    #[inline]145    pub fn in_expr(&self) -> Option<Expr> { support::child(&self.syntax) }146    #[inline]147    pub fn out_expr(&self) -> Option<Expr> { support::child(&self.syntax) }148    #[inline]149    pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) }150}151pub struct AsmOperandNamed {152    pub(crate) syntax: SyntaxNode,153}154impl ast::HasAttrs for AsmOperandNamed {}155impl ast::HasName for AsmOperandNamed {}156impl AsmOperandNamed {157    #[inline]158    pub fn asm_operand(&self) -> Option<AsmOperand> { support::child(&self.syntax) }159    #[inline]160    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }161}162pub struct AsmOption {163    pub(crate) syntax: SyntaxNode,164}165impl AsmOption {166    #[inline]167    pub fn att_syntax_token(&self) -> Option<SyntaxToken> {168        support::token(&self.syntax, T![att_syntax])169    }170    #[inline]171    pub fn may_unwind_token(&self) -> Option<SyntaxToken> {172        support::token(&self.syntax, T![may_unwind])173    }174    #[inline]175    pub fn nomem_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![nomem]) }176    #[inline]177    pub fn noreturn_token(&self) -> Option<SyntaxToken> {178        support::token(&self.syntax, T![noreturn])179    }180    #[inline]181    pub fn nostack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![nostack]) }182    #[inline]183    pub fn preserves_flags_token(&self) -> Option<SyntaxToken> {184        support::token(&self.syntax, T![preserves_flags])185    }186    #[inline]187    pub fn pure_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pure]) }188    #[inline]189    pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) }190    #[inline]191    pub fn readonly_token(&self) -> Option<SyntaxToken> {192        support::token(&self.syntax, T![readonly])193    }194}195pub struct AsmOptions {196    pub(crate) syntax: SyntaxNode,197}198impl ast::HasAttrs for AsmOptions {}199impl AsmOptions {200    #[inline]201    pub fn asm_options(&self) -> AstChildren<AsmOption> { support::children(&self.syntax) }202    #[inline]203    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }204    #[inline]205    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }206    #[inline]207    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }208    #[inline]209    pub fn options_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![options]) }210}211pub struct AsmRegOperand {212    pub(crate) syntax: SyntaxNode,213}214impl AsmRegOperand {215    #[inline]216    pub fn asm_dir_spec(&self) -> Option<AsmDirSpec> { support::child(&self.syntax) }217    #[inline]218    pub fn asm_operand_expr(&self) -> Option<AsmOperandExpr> { support::child(&self.syntax) }219    #[inline]220    pub fn asm_reg_spec(&self) -> Option<AsmRegSpec> { support::child(&self.syntax) }221    #[inline]222    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }223    #[inline]224    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }225}226pub struct AsmRegSpec {227    pub(crate) syntax: SyntaxNode,228}229impl AsmRegSpec {230    #[inline]231    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }232    #[inline]233    pub fn string_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![string]) }234}235pub struct AsmSym {236    pub(crate) syntax: SyntaxNode,237}238impl AsmSym {239    #[inline]240    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }241    #[inline]242    pub fn sym_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![sym]) }243}244pub struct AssocItemList {245    pub(crate) syntax: SyntaxNode,246}247impl ast::HasAttrs for AssocItemList {}248impl AssocItemList {249    #[inline]250    pub fn assoc_items(&self) -> AstChildren<AssocItem> { support::children(&self.syntax) }251    #[inline]252    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }253    #[inline]254    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }255}256pub struct AssocTypeArg {257    pub(crate) syntax: SyntaxNode,258}259impl ast::HasGenericArgs for AssocTypeArg {}260impl ast::HasTypeBounds for AssocTypeArg {}261impl AssocTypeArg {262    #[inline]263    pub fn const_arg(&self) -> Option<ConstArg> { support::child(&self.syntax) }264    #[inline]265    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }266    #[inline]267    pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }268    #[inline]269    pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }270    #[inline]271    pub fn return_type_syntax(&self) -> Option<ReturnTypeSyntax> { support::child(&self.syntax) }272    #[inline]273    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }274    #[inline]275    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }276}277pub struct Attr {278    pub(crate) syntax: SyntaxNode,279}280impl Attr {281    #[inline]282    pub fn meta(&self) -> Option<Meta> { support::child(&self.syntax) }283    #[inline]284    pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }285    #[inline]286    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }287    #[inline]288    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }289    #[inline]290    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }291}292pub struct AwaitExpr {293    pub(crate) syntax: SyntaxNode,294}295impl ast::HasAttrs for AwaitExpr {}296impl AwaitExpr {297    #[inline]298    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }299    #[inline]300    pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }301    #[inline]302    pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) }303}304pub struct BecomeExpr {305    pub(crate) syntax: SyntaxNode,306}307impl ast::HasAttrs for BecomeExpr {}308impl BecomeExpr {309    #[inline]310    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }311    #[inline]312    pub fn become_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![become]) }313}314pub struct BinExpr {315    pub(crate) syntax: SyntaxNode,316}317impl ast::HasAttrs for BinExpr {}318impl BinExpr {}319pub struct BlockExpr {320    pub(crate) syntax: SyntaxNode,321}322impl ast::HasAttrs for BlockExpr {}323impl BlockExpr {324    #[inline]325    pub fn label(&self) -> Option<Label> { support::child(&self.syntax) }326    #[inline]327    pub fn stmt_list(&self) -> Option<StmtList> { support::child(&self.syntax) }328    #[inline]329    pub fn try_block_modifier(&self) -> Option<TryBlockModifier> { support::child(&self.syntax) }330    #[inline]331    pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }332    #[inline]333    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }334    #[inline]335    pub fn gen_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![gen]) }336    #[inline]337    pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) }338    #[inline]339    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }340}341pub struct BoxPat {342    pub(crate) syntax: SyntaxNode,343}344impl BoxPat {345    #[inline]346    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }347    #[inline]348    pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }349}350pub struct BreakExpr {351    pub(crate) syntax: SyntaxNode,352}353impl ast::HasAttrs for BreakExpr {}354impl BreakExpr {355    #[inline]356    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }357    #[inline]358    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }359    #[inline]360    pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) }361}362pub struct CallExpr {363    pub(crate) syntax: SyntaxNode,364}365impl ast::HasArgList for CallExpr {}366impl ast::HasAttrs for CallExpr {}367impl CallExpr {368    #[inline]369    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }370}371pub struct CastExpr {372    pub(crate) syntax: SyntaxNode,373}374impl ast::HasAttrs for CastExpr {}375impl CastExpr {376    #[inline]377    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }378    #[inline]379    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }380    #[inline]381    pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }382}383pub struct CfgAtom {384    pub(crate) syntax: SyntaxNode,385}386impl CfgAtom {387    #[inline]388    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }389    #[inline]390    pub fn false_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![false]) }391    #[inline]392    pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }393    #[inline]394    pub fn string_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![string]) }395    #[inline]396    pub fn true_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![true]) }397}398pub struct CfgAttrMeta {399    pub(crate) syntax: SyntaxNode,400}401impl CfgAttrMeta {402    #[inline]403    pub fn cfg_predicate(&self) -> Option<CfgPredicate> { support::child(&self.syntax) }404    #[inline]405    pub fn metas(&self) -> AstChildren<Meta> { support::children(&self.syntax) }406    #[inline]407    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }408    #[inline]409    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }410    #[inline]411    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }412    #[inline]413    pub fn cfg_attr_token(&self) -> Option<SyntaxToken> {414        support::token(&self.syntax, T![cfg_attr])415    }416}417pub struct CfgComposite {418    pub(crate) syntax: SyntaxNode,419}420impl CfgComposite {421    #[inline]422    pub fn cfg_predicates(&self) -> AstChildren<CfgPredicate> { support::children(&self.syntax) }423    #[inline]424    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }425    #[inline]426    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }427    #[inline]428    pub fn keyword(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }429}430pub struct CfgMeta {431    pub(crate) syntax: SyntaxNode,432}433impl CfgMeta {434    #[inline]435    pub fn cfg_predicate(&self) -> Option<CfgPredicate> { support::child(&self.syntax) }436    #[inline]437    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }438    #[inline]439    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }440    #[inline]441    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }442    #[inline]443    pub fn cfg_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![cfg]) }444}445pub struct CfgPredExpr {446    pub(crate) syntax: SyntaxNode,447}448impl CfgPredExpr {449    #[inline]450    pub fn cfg_predicate(&self) -> Option<CfgPredicate> { support::child(&self.syntax) }451    #[inline]452    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }453    #[inline]454    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }455    #[inline]456    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }457    #[inline]458    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }459    #[inline]460    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }461    #[inline]462    pub fn cfg_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![cfg]) }463}464pub struct CfgPredPat {465    pub(crate) syntax: SyntaxNode,466}467impl CfgPredPat {468    #[inline]469    pub fn cfg_predicate(&self) -> Option<CfgPredicate> { support::child(&self.syntax) }470    #[inline]471    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }472    #[inline]473    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }474    #[inline]475    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }476    #[inline]477    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }478    #[inline]479    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }480    #[inline]481    pub fn cfg_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![cfg]) }482}483pub struct ClosureExpr {484    pub(crate) syntax: SyntaxNode,485}486impl ast::HasAttrs for ClosureExpr {}487impl ClosureExpr {488    #[inline]489    pub fn for_binder(&self) -> Option<ForBinder> { support::child(&self.syntax) }490    #[inline]491    pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }492    #[inline]493    pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }494    #[inline]495    pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }496    #[inline]497    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }498    #[inline]499    pub fn gen_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![gen]) }500    #[inline]501    pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) }502    #[inline]503    pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }504}505pub struct Const {506    pub(crate) syntax: SyntaxNode,507}508impl ast::HasAttrs for Const {}509impl ast::HasGenericParams for Const {}510impl ast::HasName for Const {}511impl ast::HasVisibility for Const {}512impl Const {513    #[inline]514    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }515    #[inline]516    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }517    #[inline]518    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }519    #[inline]520    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }521    #[inline]522    pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }523    #[inline]524    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }525    #[inline]526    pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }527    #[inline]528    pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) }529}530pub struct ConstArg {531    pub(crate) syntax: SyntaxNode,532}533impl ConstArg {534    #[inline]535    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }536}537pub struct ConstBlockPat {538    pub(crate) syntax: SyntaxNode,539}540impl ConstBlockPat {541    #[inline]542    pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) }543    #[inline]544    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }545}546pub struct ConstParam {547    pub(crate) syntax: SyntaxNode,548}549impl ast::HasAttrs for ConstParam {}550impl ast::HasName for ConstParam {}551impl ConstParam {552    #[inline]553    pub fn default_val(&self) -> Option<ConstArg> { support::child(&self.syntax) }554    #[inline]555    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }556    #[inline]557    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }558    #[inline]559    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }560    #[inline]561    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }562}563pub struct ContinueExpr {564    pub(crate) syntax: SyntaxNode,565}566impl ast::HasAttrs for ContinueExpr {}567impl ContinueExpr {568    #[inline]569    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }570    #[inline]571    pub fn continue_token(&self) -> Option<SyntaxToken> {572        support::token(&self.syntax, T![continue])573    }574}575pub struct DerefPat {576    pub(crate) syntax: SyntaxNode,577}578impl DerefPat {579    #[inline]580    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }581    #[inline]582    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }583    #[inline]584    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }585    #[inline]586    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }587    #[inline]588    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }589    #[inline]590    pub fn deref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![deref]) }591}592pub struct DocComment {593    pub(crate) syntax: SyntaxNode,594}595impl DocComment {596    #[inline]597    pub fn inner_doc_comment_token(&self) -> Option<SyntaxToken> {598        support::token(&self.syntax, T![inner_doc_comment])599    }600    #[inline]601    pub fn outer_doc_comment_token(&self) -> Option<SyntaxToken> {602        support::token(&self.syntax, T![outer_doc_comment])603    }604}605pub struct DynTraitType {606    pub(crate) syntax: SyntaxNode,607}608impl DynTraitType {609    #[inline]610    pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) }611    #[inline]612    pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) }613}614pub struct Enum {615    pub(crate) syntax: SyntaxNode,616}617impl ast::HasAttrs for Enum {}618impl ast::HasGenericParams for Enum {}619impl ast::HasName for Enum {}620impl ast::HasVisibility for Enum {}621impl Enum {622    #[inline]623    pub fn variant_list(&self) -> Option<VariantList> { support::child(&self.syntax) }624    #[inline]625    pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) }626}627pub struct ExprStmt {628    pub(crate) syntax: SyntaxNode,629}630impl ExprStmt {631    #[inline]632    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }633    #[inline]634    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }635}636pub struct ExternBlock {637    pub(crate) syntax: SyntaxNode,638}639impl ast::HasAttrs for ExternBlock {}640impl ExternBlock {641    #[inline]642    pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }643    #[inline]644    pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) }645    #[inline]646    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }647}648pub struct ExternCrate {649    pub(crate) syntax: SyntaxNode,650}651impl ast::HasAttrs for ExternCrate {}652impl ast::HasVisibility for ExternCrate {}653impl ExternCrate {654    #[inline]655    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }656    #[inline]657    pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) }658    #[inline]659    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }660    #[inline]661    pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }662    #[inline]663    pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }664}665pub struct ExternItemList {666    pub(crate) syntax: SyntaxNode,667}668impl ast::HasAttrs for ExternItemList {}669impl ExternItemList {670    #[inline]671    pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) }672    #[inline]673    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }674    #[inline]675    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }676}677pub struct FieldExpr {678    pub(crate) syntax: SyntaxNode,679}680impl ast::HasAttrs for FieldExpr {}681impl FieldExpr {682    #[inline]683    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }684    #[inline]685    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }686    #[inline]687    pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }688}689pub struct Fn {690    pub(crate) syntax: SyntaxNode,691}692impl ast::HasAttrs for Fn {}693impl ast::HasGenericParams for Fn {}694impl ast::HasName for Fn {}695impl ast::HasVisibility for Fn {}696impl Fn {697    #[inline]698    pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }699    #[inline]700    pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }701    #[inline]702    pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }703    #[inline]704    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }705    #[inline]706    pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }707    #[inline]708    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }709    #[inline]710    pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }711    #[inline]712    pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }713    #[inline]714    pub fn gen_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![gen]) }715    #[inline]716    pub fn safe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![safe]) }717    #[inline]718    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }719}720pub struct FnPtrType {721    pub(crate) syntax: SyntaxNode,722}723impl FnPtrType {724    #[inline]725    pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }726    #[inline]727    pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }728    #[inline]729    pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }730    #[inline]731    pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }732    #[inline]733    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }734    #[inline]735    pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }736    #[inline]737    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }738}739pub struct ForBinder {740    pub(crate) syntax: SyntaxNode,741}742impl ForBinder {743    #[inline]744    pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }745    #[inline]746    pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }747}748pub struct ForExpr {749    pub(crate) syntax: SyntaxNode,750}751impl ast::HasAttrs for ForExpr {}752impl ForExpr {753    #[inline]754    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }755    #[inline]756    pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }757    #[inline]758    pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }759}760pub struct ForType {761    pub(crate) syntax: SyntaxNode,762}763impl ForType {764    #[inline]765    pub fn for_binder(&self) -> Option<ForBinder> { support::child(&self.syntax) }766    #[inline]767    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }768}769pub struct FormatArgsArg {770    pub(crate) syntax: SyntaxNode,771}772impl ast::HasName for FormatArgsArg {}773impl FormatArgsArg {774    #[inline]775    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }776    #[inline]777    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }778}779pub struct FormatArgsExpr {780    pub(crate) syntax: SyntaxNode,781}782impl ast::HasAttrs for FormatArgsExpr {}783impl FormatArgsExpr {784    #[inline]785    pub fn template(&self) -> Option<Expr> { support::child(&self.syntax) }786    #[inline]787    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }788    #[inline]789    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }790    #[inline]791    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }792    #[inline]793    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }794    #[inline]795    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }796    #[inline]797    pub fn format_args_token(&self) -> Option<SyntaxToken> {798        support::token(&self.syntax, T![format_args])799    }800}801pub struct GenericArgList {802    pub(crate) syntax: SyntaxNode,803}804impl GenericArgList {805    #[inline]806    pub fn generic_args(&self) -> AstChildren<GenericArg> { support::children(&self.syntax) }807    #[inline]808    pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }809    #[inline]810    pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }811    #[inline]812    pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }813}814pub struct GenericParamList {815    pub(crate) syntax: SyntaxNode,816}817impl GenericParamList {818    #[inline]819    pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) }820    #[inline]821    pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }822    #[inline]823    pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }824}825pub struct IdentPat {826    pub(crate) syntax: SyntaxNode,827}828impl ast::HasAttrs for IdentPat {}829impl ast::HasName for IdentPat {}830impl IdentPat {831    #[inline]832    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }833    #[inline]834    pub fn at_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![@]) }835    #[inline]836    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }837    #[inline]838    pub fn ref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ref]) }839}840pub struct IfExpr {841    pub(crate) syntax: SyntaxNode,842}843impl ast::HasAttrs for IfExpr {}844impl IfExpr {845    #[inline]846    pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) }847    #[inline]848    pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }849}850pub struct Impl {851    pub(crate) syntax: SyntaxNode,852}853impl ast::HasAttrs for Impl {}854impl ast::HasGenericParams for Impl {}855impl ast::HasVisibility for Impl {}856impl Impl {857    #[inline]858    pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) }859    #[inline]860    pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }861    #[inline]862    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }863    #[inline]864    pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }865    #[inline]866    pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }867    #[inline]868    pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }869    #[inline]870    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }871}872pub struct ImplRestriction {873    pub(crate) syntax: SyntaxNode,874}875impl ImplRestriction {876    #[inline]877    pub fn visibility_inner(&self) -> Option<VisibilityInner> { support::child(&self.syntax) }878    #[inline]879    pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }880}881pub struct ImplTraitType {882    pub(crate) syntax: SyntaxNode,883}884impl ImplTraitType {885    #[inline]886    pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) }887    #[inline]888    pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }889}890pub struct IncludeBytesExpr {891    pub(crate) syntax: SyntaxNode,892}893impl IncludeBytesExpr {894    #[inline]895    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }896    #[inline]897    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }898    #[inline]899    pub fn include_bytes_token(&self) -> Option<SyntaxToken> {900        support::token(&self.syntax, T![include_bytes])901    }902}903pub struct IndexExpr {904    pub(crate) syntax: SyntaxNode,905}906impl ast::HasAttrs for IndexExpr {}907impl IndexExpr {908    #[inline]909    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }910    #[inline]911    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }912}913pub struct InferType {914    pub(crate) syntax: SyntaxNode,915}916impl InferType {917    #[inline]918    pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }919}920pub struct ItemList {921    pub(crate) syntax: SyntaxNode,922}923impl ast::HasAttrs for ItemList {}924impl ast::HasModuleItem for ItemList {}925impl ItemList {926    #[inline]927    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }928    #[inline]929    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }930}931pub struct KeyValueMeta {932    pub(crate) syntax: SyntaxNode,933}934impl KeyValueMeta {935    #[inline]936    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }937    #[inline]938    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }939    #[inline]940    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }941}942pub struct Label {943    pub(crate) syntax: SyntaxNode,944}945impl Label {946    #[inline]947    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }948    #[inline]949    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }950}951pub struct LetElse {952    pub(crate) syntax: SyntaxNode,953}954impl LetElse {955    #[inline]956    pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) }957    #[inline]958    pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) }959}960pub struct LetExpr {961    pub(crate) syntax: SyntaxNode,962}963impl ast::HasAttrs for LetExpr {}964impl LetExpr {965    #[inline]966    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }967    #[inline]968    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }969    #[inline]970    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }971    #[inline]972    pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }973}974pub struct LetStmt {975    pub(crate) syntax: SyntaxNode,976}977impl ast::HasAttrs for LetStmt {}978impl LetStmt {979    #[inline]980    pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) }981    #[inline]982    pub fn let_else(&self) -> Option<LetElse> { support::child(&self.syntax) }983    #[inline]984    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }985    #[inline]986    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }987    #[inline]988    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }989    #[inline]990    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }991    #[inline]992    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }993    #[inline]994    pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }995    #[inline]996    pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) }997}998pub struct Lifetime {999    pub(crate) syntax: SyntaxNode,1000}1001impl Lifetime {1002    #[inline]1003    pub fn lifetime_ident_token(&self) -> Option<SyntaxToken> {1004        support::token(&self.syntax, T![lifetime_ident])1005    }1006}1007pub struct LifetimeArg {1008    pub(crate) syntax: SyntaxNode,1009}1010impl LifetimeArg {1011    #[inline]1012    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }1013}1014pub struct LifetimeParam {1015    pub(crate) syntax: SyntaxNode,1016}1017impl ast::HasAttrs for LifetimeParam {}1018impl ast::HasTypeBounds for LifetimeParam {}1019impl LifetimeParam {1020    #[inline]1021    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }1022}1023pub struct Literal {1024    pub(crate) syntax: SyntaxNode,1025}1026impl ast::HasAttrs for Literal {}1027impl Literal {}1028pub struct LiteralPat {1029    pub(crate) syntax: SyntaxNode,1030}1031impl LiteralPat {1032    #[inline]1033    pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }1034    #[inline]1035    pub fn minus_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![-]) }1036}1037pub struct LoopExpr {1038    pub(crate) syntax: SyntaxNode,1039}1040impl ast::HasAttrs for LoopExpr {}1041impl ast::HasLoopBody for LoopExpr {}1042impl LoopExpr {1043    #[inline]1044    pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) }1045}1046pub struct MacroCall {1047    pub(crate) syntax: SyntaxNode,1048}1049impl ast::HasAttrs for MacroCall {}1050impl MacroCall {1051    #[inline]1052    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1053    #[inline]1054    pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }1055    #[inline]1056    pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }1057    #[inline]1058    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }1059}1060pub struct MacroDef {1061    pub(crate) syntax: SyntaxNode,1062}1063impl ast::HasAttrs for MacroDef {}1064impl ast::HasName for MacroDef {}1065impl ast::HasVisibility for MacroDef {}1066impl MacroDef {1067    #[inline]1068    pub fn macro_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![macro]) }1069}1070pub struct MacroExpr {1071    pub(crate) syntax: SyntaxNode,1072}1073impl MacroExpr {1074    #[inline]1075    pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) }1076}1077pub struct MacroItems {1078    pub(crate) syntax: SyntaxNode,1079}1080impl ast::HasModuleItem for MacroItems {}1081impl MacroItems {}1082pub struct MacroPat {1083    pub(crate) syntax: SyntaxNode,1084}1085impl MacroPat {1086    #[inline]1087    pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) }1088}1089pub struct MacroRules {1090    pub(crate) syntax: SyntaxNode,1091}1092impl ast::HasAttrs for MacroRules {}1093impl ast::HasName for MacroRules {}1094impl ast::HasVisibility for MacroRules {}1095impl MacroRules {1096    #[inline]1097    pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }1098    #[inline]1099    pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }1100    #[inline]1101    pub fn macro_rules_token(&self) -> Option<SyntaxToken> {1102        support::token(&self.syntax, T![macro_rules])1103    }1104}1105pub struct MacroStmts {1106    pub(crate) syntax: SyntaxNode,1107}1108impl MacroStmts {1109    #[inline]1110    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1111    #[inline]1112    pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }1113}1114pub struct MacroType {1115    pub(crate) syntax: SyntaxNode,1116}1117impl MacroType {1118    #[inline]1119    pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) }1120}1121pub struct MatchArm {1122    pub(crate) syntax: SyntaxNode,1123}1124impl ast::HasAttrs for MatchArm {}1125impl MatchArm {1126    #[inline]1127    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1128    #[inline]1129    pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) }1130    #[inline]1131    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }1132    #[inline]1133    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }1134    #[inline]1135    pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) }1136}1137pub struct MatchArmList {1138    pub(crate) syntax: SyntaxNode,1139}1140impl ast::HasAttrs for MatchArmList {}1141impl MatchArmList {1142    #[inline]1143    pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) }1144    #[inline]1145    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }1146    #[inline]1147    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }1148}1149pub struct MatchExpr {1150    pub(crate) syntax: SyntaxNode,1151}1152impl ast::HasAttrs for MatchExpr {}1153impl MatchExpr {1154    #[inline]1155    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1156    #[inline]1157    pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) }1158    #[inline]1159    pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) }1160}1161pub struct MatchGuard {1162    pub(crate) syntax: SyntaxNode,1163}1164impl MatchGuard {1165    #[inline]1166    pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }1167}1168pub struct MethodCallExpr {1169    pub(crate) syntax: SyntaxNode,1170}1171impl ast::HasArgList for MethodCallExpr {}1172impl ast::HasAttrs for MethodCallExpr {}1173impl ast::HasGenericArgs for MethodCallExpr {}1174impl MethodCallExpr {1175    #[inline]1176    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }1177    #[inline]1178    pub fn receiver(&self) -> Option<Expr> { support::child(&self.syntax) }1179    #[inline]1180    pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }1181}1182pub struct Module {1183    pub(crate) syntax: SyntaxNode,1184}1185impl ast::HasAttrs for Module {}1186impl ast::HasName for Module {}1187impl ast::HasVisibility for Module {}1188impl Module {1189    #[inline]1190    pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) }1191    #[inline]1192    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }1193    #[inline]1194    pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) }1195}1196pub struct MutRestriction {1197    pub(crate) syntax: SyntaxNode,1198}1199impl MutRestriction {1200    #[inline]1201    pub fn visibility_inner(&self) -> Option<VisibilityInner> { support::child(&self.syntax) }1202    #[inline]1203    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1204}1205pub struct Name {1206    pub(crate) syntax: SyntaxNode,1207}1208impl Name {1209    #[inline]1210    pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }1211    #[inline]1212    pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }1213}1214pub struct NameRef {1215    pub(crate) syntax: SyntaxNode,1216}1217impl NameRef {1218    #[inline]1219    pub fn Self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![Self]) }1220    #[inline]1221    pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }1222    #[inline]1223    pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }1224    #[inline]1225    pub fn int_number_token(&self) -> Option<SyntaxToken> {1226        support::token(&self.syntax, T![int_number])1227    }1228    #[inline]1229    pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }1230    #[inline]1231    pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) }1232}1233pub struct NeverType {1234    pub(crate) syntax: SyntaxNode,1235}1236impl NeverType {1237    #[inline]1238    pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }1239}1240pub struct NotNull {1241    pub(crate) syntax: SyntaxNode,1242}1243impl NotNull {1244    #[inline]1245    pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }1246    #[inline]1247    pub fn null_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![null]) }1248}1249pub struct OffsetOfExpr {1250    pub(crate) syntax: SyntaxNode,1251}1252impl ast::HasAttrs for OffsetOfExpr {}1253impl OffsetOfExpr {1254    #[inline]1255    pub fn fields(&self) -> AstChildren<NameRef> { support::children(&self.syntax) }1256    #[inline]1257    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1258    #[inline]1259    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }1260    #[inline]1261    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1262    #[inline]1263    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1264    #[inline]1265    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }1266    #[inline]1267    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }1268    #[inline]1269    pub fn offset_of_token(&self) -> Option<SyntaxToken> {1270        support::token(&self.syntax, T![offset_of])1271    }1272}1273pub struct OrPat {1274    pub(crate) syntax: SyntaxNode,1275}1276impl OrPat {1277    #[inline]1278    pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }1279    #[inline]1280    pub fn pipe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![|]) }1281}1282pub struct Param {1283    pub(crate) syntax: SyntaxNode,1284}1285impl ast::HasAttrs for Param {}1286impl Param {1287    #[inline]1288    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }1289    #[inline]1290    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1291    #[inline]1292    pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) }1293    #[inline]1294    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }1295}1296pub struct ParamList {1297    pub(crate) syntax: SyntaxNode,1298}1299impl ParamList {1300    #[inline]1301    pub fn params(&self) -> AstChildren<Param> { support::children(&self.syntax) }1302    #[inline]1303    pub fn self_param(&self) -> Option<SelfParam> { support::child(&self.syntax) }1304    #[inline]1305    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1306    #[inline]1307    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1308    #[inline]1309    pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }1310    #[inline]1311    pub fn pipe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![|]) }1312}1313pub struct ParenExpr {1314    pub(crate) syntax: SyntaxNode,1315}1316impl ast::HasAttrs for ParenExpr {}1317impl ParenExpr {1318    #[inline]1319    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1320    #[inline]1321    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1322    #[inline]1323    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1324}1325pub struct ParenPat {1326    pub(crate) syntax: SyntaxNode,1327}1328impl ParenPat {1329    #[inline]1330    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }1331    #[inline]1332    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1333    #[inline]1334    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1335}1336pub struct ParenType {1337    pub(crate) syntax: SyntaxNode,1338}1339impl ParenType {1340    #[inline]1341    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1342    #[inline]1343    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1344    #[inline]1345    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1346}1347pub struct ParenthesizedArgList {1348    pub(crate) syntax: SyntaxNode,1349}1350impl ParenthesizedArgList {1351    #[inline]1352    pub fn type_args(&self) -> AstChildren<TypeArg> { support::children(&self.syntax) }1353    #[inline]1354    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1355    #[inline]1356    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1357    #[inline]1358    pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }1359}1360pub struct Path {1361    pub(crate) syntax: SyntaxNode,1362}1363impl Path {1364    #[inline]1365    pub fn qualifier(&self) -> Option<Path> { support::child(&self.syntax) }1366    #[inline]1367    pub fn segment(&self) -> Option<PathSegment> { support::child(&self.syntax) }1368    #[inline]1369    pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }1370}1371pub struct PathExpr {1372    pub(crate) syntax: SyntaxNode,1373}1374impl ast::HasAttrs for PathExpr {}1375impl PathExpr {1376    #[inline]1377    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1378}1379pub struct PathMeta {1380    pub(crate) syntax: SyntaxNode,1381}1382impl PathMeta {1383    #[inline]1384    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1385}1386pub struct PathPat {1387    pub(crate) syntax: SyntaxNode,1388}1389impl PathPat {1390    #[inline]1391    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1392}1393pub struct PathSegment {1394    pub(crate) syntax: SyntaxNode,1395}1396impl ast::HasGenericArgs for PathSegment {}1397impl PathSegment {1398    #[inline]1399    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }1400    #[inline]1401    pub fn parenthesized_arg_list(&self) -> Option<ParenthesizedArgList> {1402        support::child(&self.syntax)1403    }1404    #[inline]1405    pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }1406    #[inline]1407    pub fn return_type_syntax(&self) -> Option<ReturnTypeSyntax> { support::child(&self.syntax) }1408    #[inline]1409    pub fn type_anchor(&self) -> Option<TypeAnchor> { support::child(&self.syntax) }1410    #[inline]1411    pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }1412}1413pub struct PathType {1414    pub(crate) syntax: SyntaxNode,1415}1416impl PathType {1417    #[inline]1418    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1419}1420pub struct PatternType {1421    pub(crate) syntax: SyntaxNode,1422}1423impl PatternType {1424    #[inline]1425    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }1426    #[inline]1427    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1428    #[inline]1429    pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }1430    #[inline]1431    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1432    #[inline]1433    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1434    #[inline]1435    pub fn builtin_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![builtin]) }1436    #[inline]1437    pub fn is_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![is]) }1438    #[inline]1439    pub fn pattern_type_token(&self) -> Option<SyntaxToken> {1440        support::token(&self.syntax, T![pattern_type])1441    }1442}1443pub struct PrefixExpr {1444    pub(crate) syntax: SyntaxNode,1445}1446impl ast::HasAttrs for PrefixExpr {}1447impl PrefixExpr {1448    #[inline]1449    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1450}1451pub struct PtrType {1452    pub(crate) syntax: SyntaxNode,1453}1454impl PtrType {1455    #[inline]1456    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1457    #[inline]1458    pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }1459    #[inline]1460    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }1461    #[inline]1462    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1463}1464pub struct RangeExpr {1465    pub(crate) syntax: SyntaxNode,1466}1467impl ast::HasAttrs for RangeExpr {}1468impl RangeExpr {}1469pub struct RangePat {1470    pub(crate) syntax: SyntaxNode,1471}1472impl RangePat {}1473pub struct RecordExpr {1474    pub(crate) syntax: SyntaxNode,1475}1476impl RecordExpr {1477    #[inline]1478    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1479    #[inline]1480    pub fn record_expr_field_list(&self) -> Option<RecordExprFieldList> {1481        support::child(&self.syntax)1482    }1483}1484pub struct RecordExprField {1485    pub(crate) syntax: SyntaxNode,1486}1487impl ast::HasAttrs for RecordExprField {}1488impl RecordExprField {1489    #[inline]1490    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1491    #[inline]1492    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }1493    #[inline]1494    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }1495}1496pub struct RecordExprFieldList {1497    pub(crate) syntax: SyntaxNode,1498}1499impl ast::HasAttrs for RecordExprFieldList {}1500impl RecordExprFieldList {1501    #[inline]1502    pub fn fields(&self) -> AstChildren<RecordExprField> { support::children(&self.syntax) }1503    #[inline]1504    pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) }1505    #[inline]1506    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }1507    #[inline]1508    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }1509    #[inline]1510    pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }1511}1512pub struct RecordField {1513    pub(crate) syntax: SyntaxNode,1514}1515impl ast::HasAttrs for RecordField {}1516impl ast::HasName for RecordField {}1517impl ast::HasVisibility for RecordField {}1518impl RecordField {1519    #[inline]1520    pub fn default_val(&self) -> Option<ConstArg> { support::child(&self.syntax) }1521    #[inline]1522    pub fn mut_restriction(&self) -> Option<MutRestriction> { support::child(&self.syntax) }1523    #[inline]1524    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1525    #[inline]1526    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }1527    #[inline]1528    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }1529    #[inline]1530    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }1531}1532pub struct RecordFieldList {1533    pub(crate) syntax: SyntaxNode,1534}1535impl RecordFieldList {1536    #[inline]1537    pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) }1538    #[inline]1539    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }1540    #[inline]1541    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }1542}1543pub struct RecordPat {1544    pub(crate) syntax: SyntaxNode,1545}1546impl RecordPat {1547    #[inline]1548    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1549    #[inline]1550    pub fn record_pat_field_list(&self) -> Option<RecordPatFieldList> {1551        support::child(&self.syntax)1552    }1553}1554pub struct RecordPatField {1555    pub(crate) syntax: SyntaxNode,1556}1557impl ast::HasAttrs for RecordPatField {}1558impl RecordPatField {1559    #[inline]1560    pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }1561    #[inline]1562    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }1563    #[inline]1564    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }1565}1566pub struct RecordPatFieldList {1567    pub(crate) syntax: SyntaxNode,1568}1569impl RecordPatFieldList {1570    #[inline]1571    pub fn fields(&self) -> AstChildren<RecordPatField> { support::children(&self.syntax) }1572    #[inline]1573    pub fn rest_pat(&self) -> Option<RestPat> { support::child(&self.syntax) }1574    #[inline]1575    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }1576    #[inline]1577    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }1578}1579pub struct RefExpr {1580    pub(crate) syntax: SyntaxNode,1581}1582impl ast::HasAttrs for RefExpr {}1583impl RefExpr {1584    #[inline]1585    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1586    #[inline]1587    pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }1588    #[inline]1589    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }1590    #[inline]1591    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1592    #[inline]1593    pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) }1594}1595pub struct RefPat {1596    pub(crate) syntax: SyntaxNode,1597}1598impl RefPat {1599    #[inline]1600    pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }1601    #[inline]1602    pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }1603    #[inline]1604    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1605}1606pub struct RefType {1607    pub(crate) syntax: SyntaxNode,1608}1609impl RefType {1610    #[inline]1611    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }1612    #[inline]1613    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1614    #[inline]1615    pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }1616    #[inline]1617    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1618}1619pub struct Rename {1620    pub(crate) syntax: SyntaxNode,1621}1622impl ast::HasName for Rename {}1623impl Rename {1624    #[inline]1625    pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }1626    #[inline]1627    pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }1628}1629pub struct RestPat {1630    pub(crate) syntax: SyntaxNode,1631}1632impl ast::HasAttrs for RestPat {}1633impl RestPat {1634    #[inline]1635    pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }1636}1637pub struct RetType {1638    pub(crate) syntax: SyntaxNode,1639}1640impl RetType {1641    #[inline]1642    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1643    #[inline]1644    pub fn thin_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![->]) }1645}1646pub struct ReturnExpr {1647    pub(crate) syntax: SyntaxNode,1648}1649impl ast::HasAttrs for ReturnExpr {}1650impl ReturnExpr {1651    #[inline]1652    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1653    #[inline]1654    pub fn return_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![return]) }1655}1656pub struct ReturnTypeSyntax {1657    pub(crate) syntax: SyntaxNode,1658}1659impl ReturnTypeSyntax {1660    #[inline]1661    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1662    #[inline]1663    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1664    #[inline]1665    pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }1666}1667pub struct SelfParam {1668    pub(crate) syntax: SyntaxNode,1669}1670impl ast::HasAttrs for SelfParam {}1671impl ast::HasName for SelfParam {}1672impl SelfParam {1673    #[inline]1674    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }1675    #[inline]1676    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1677    #[inline]1678    pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }1679    #[inline]1680    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }1681    #[inline]1682    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1683}1684pub struct SlicePat {1685    pub(crate) syntax: SyntaxNode,1686}1687impl SlicePat {1688    #[inline]1689    pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }1690    #[inline]1691    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }1692    #[inline]1693    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }1694}1695pub struct SliceType {1696    pub(crate) syntax: SyntaxNode,1697}1698impl SliceType {1699    #[inline]1700    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1701    #[inline]1702    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }1703    #[inline]1704    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }1705}1706pub struct SourceFile {1707    pub(crate) syntax: SyntaxNode,1708}1709impl ast::HasAttrs for SourceFile {}1710impl ast::HasModuleItem for SourceFile {}1711impl SourceFile {1712    #[inline]1713    pub fn frontmatter_token(&self) -> Option<SyntaxToken> {1714        support::token(&self.syntax, T![frontmatter])1715    }1716    #[inline]1717    pub fn shebang_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![shebang]) }1718}1719pub struct Static {1720    pub(crate) syntax: SyntaxNode,1721}1722impl ast::HasAttrs for Static {}1723impl ast::HasName for Static {}1724impl ast::HasVisibility for Static {}1725impl Static {1726    #[inline]1727    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1728    #[inline]1729    pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }1730    #[inline]1731    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }1732    #[inline]1733    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }1734    #[inline]1735    pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }1736    #[inline]1737    pub fn safe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![safe]) }1738    #[inline]1739    pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }1740    #[inline]1741    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }1742}1743pub struct StmtList {1744    pub(crate) syntax: SyntaxNode,1745}1746impl ast::HasAttrs for StmtList {}1747impl StmtList {1748    #[inline]1749    pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }1750    #[inline]1751    pub fn tail_expr(&self) -> Option<Expr> { support::child(&self.syntax) }1752    #[inline]1753    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }1754    #[inline]1755    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }1756}1757pub struct Struct {1758    pub(crate) syntax: SyntaxNode,1759}1760impl ast::HasAttrs for Struct {}1761impl ast::HasGenericParams for Struct {}1762impl ast::HasName for Struct {}1763impl ast::HasVisibility for Struct {}1764impl Struct {1765    #[inline]1766    pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) }1767    #[inline]1768    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }1769    #[inline]1770    pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) }1771}1772pub struct TokenTree {1773    pub(crate) syntax: SyntaxNode,1774}1775impl TokenTree {1776    #[inline]1777    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1778    #[inline]1779    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1780    #[inline]1781    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }1782    #[inline]1783    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }1784    #[inline]1785    pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }1786    #[inline]1787    pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }1788}1789pub struct TokenTreeMeta {1790    pub(crate) syntax: SyntaxNode,1791}1792impl TokenTreeMeta {1793    #[inline]1794    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1795    #[inline]1796    pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }1797}1798pub struct Trait {1799    pub(crate) syntax: SyntaxNode,1800}1801impl ast::HasAttrs for Trait {}1802impl ast::HasGenericParams for Trait {}1803impl ast::HasName for Trait {}1804impl ast::HasTypeBounds for Trait {}1805impl ast::HasVisibility for Trait {}1806impl Trait {1807    #[inline]1808    pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) }1809    #[inline]1810    pub fn impl_restriction(&self) -> Option<ImplRestriction> { support::child(&self.syntax) }1811    #[inline]1812    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }1813    #[inline]1814    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }1815    #[inline]1816    pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) }1817    #[inline]1818    pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) }1819    #[inline]1820    pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }1821}1822pub struct TryBlockModifier {1823    pub(crate) syntax: SyntaxNode,1824}1825impl TryBlockModifier {1826    #[inline]1827    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1828    #[inline]1829    pub fn bikeshed_token(&self) -> Option<SyntaxToken> {1830        support::token(&self.syntax, T![bikeshed])1831    }1832    #[inline]1833    pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) }1834}1835pub struct TryExpr {1836    pub(crate) syntax: SyntaxNode,1837}1838impl ast::HasAttrs for TryExpr {}1839impl TryExpr {1840    #[inline]1841    pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }1842    #[inline]1843    pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }1844}1845pub struct TupleExpr {1846    pub(crate) syntax: SyntaxNode,1847}1848impl ast::HasAttrs for TupleExpr {}1849impl TupleExpr {1850    #[inline]1851    pub fn fields(&self) -> AstChildren<Expr> { support::children(&self.syntax) }1852    #[inline]1853    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1854    #[inline]1855    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1856}1857pub struct TupleField {1858    pub(crate) syntax: SyntaxNode,1859}1860impl ast::HasAttrs for TupleField {}1861impl ast::HasVisibility for TupleField {}1862impl TupleField {1863    #[inline]1864    pub fn mut_restriction(&self) -> Option<MutRestriction> { support::child(&self.syntax) }1865    #[inline]1866    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1867}1868pub struct TupleFieldList {1869    pub(crate) syntax: SyntaxNode,1870}1871impl TupleFieldList {1872    #[inline]1873    pub fn fields(&self) -> AstChildren<TupleField> { support::children(&self.syntax) }1874    #[inline]1875    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1876    #[inline]1877    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1878}1879pub struct TuplePat {1880    pub(crate) syntax: SyntaxNode,1881}1882impl TuplePat {1883    #[inline]1884    pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) }1885    #[inline]1886    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1887    #[inline]1888    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1889}1890pub struct TupleStructPat {1891    pub(crate) syntax: SyntaxNode,1892}1893impl TupleStructPat {1894    #[inline]1895    pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) }1896    #[inline]1897    pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }1898    #[inline]1899    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1900    #[inline]1901    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1902}1903pub struct TupleType {1904    pub(crate) syntax: SyntaxNode,1905}1906impl TupleType {1907    #[inline]1908    pub fn fields(&self) -> AstChildren<Type> { support::children(&self.syntax) }1909    #[inline]1910    pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }1911    #[inline]1912    pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }1913}1914pub struct TypeAlias {1915    pub(crate) syntax: SyntaxNode,1916}1917impl ast::HasAttrs for TypeAlias {}1918impl ast::HasGenericParams for TypeAlias {}1919impl ast::HasName for TypeAlias {}1920impl ast::HasTypeBounds for TypeAlias {}1921impl ast::HasVisibility for TypeAlias {}1922impl TypeAlias {1923    #[inline]1924    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1925    #[inline]1926    pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }1927    #[inline]1928    pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }1929    #[inline]1930    pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }1931    #[inline]1932    pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) }1933}1934pub struct TypeAnchor {1935    pub(crate) syntax: SyntaxNode,1936}1937impl TypeAnchor {1938    #[inline]1939    pub fn path_type(&self) -> Option<PathType> { support::child(&self.syntax) }1940    #[inline]1941    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1942    #[inline]1943    pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }1944    #[inline]1945    pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }1946    #[inline]1947    pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }1948}1949pub struct TypeArg {1950    pub(crate) syntax: SyntaxNode,1951}1952impl TypeArg {1953    #[inline]1954    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1955}1956pub struct TypeBound {1957    pub(crate) syntax: SyntaxNode,1958}1959impl TypeBound {1960    #[inline]1961    pub fn for_binder(&self) -> Option<ForBinder> { support::child(&self.syntax) }1962    #[inline]1963    pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) }1964    #[inline]1965    pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }1966    #[inline]1967    pub fn use_bound_generic_args(&self) -> Option<UseBoundGenericArgs> {1968        support::child(&self.syntax)1969    }1970    #[inline]1971    pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }1972    #[inline]1973    pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }1974    #[inline]1975    pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }1976    #[inline]1977    pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }1978    #[inline]1979    pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }1980    #[inline]1981    pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) }1982    #[inline]1983    pub fn tilde_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![~]) }1984}1985pub struct TypeBoundList {1986    pub(crate) syntax: SyntaxNode,1987}1988impl TypeBoundList {1989    #[inline]1990    pub fn bounds(&self) -> AstChildren<TypeBound> { support::children(&self.syntax) }1991}1992pub struct TypeParam {1993    pub(crate) syntax: SyntaxNode,1994}1995impl ast::HasAttrs for TypeParam {}1996impl ast::HasName for TypeParam {}1997impl ast::HasTypeBounds for TypeParam {}1998impl TypeParam {1999    #[inline]2000    pub fn default_type(&self) -> Option<Type> { support::child(&self.syntax) }

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.

Generated by searchcode.com · powered by code_get_file + code_get_findings