1 //! Generated by `sourcegen_ast`, do not edit by hand. 2 3 #![allow(non_snake_case)] 4 use crate::{ 5 ast::{self, support, AstChildren, AstNode}, 6 SyntaxKind::{self, *}, 7 SyntaxNode, SyntaxToken, T, 8 }; 9 10 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 11 pub struct Name { 12 pub(crate) syntax: SyntaxNode, 13 } 14 impl Name { ident_token(&self) -> Option<SyntaxToken>15 pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) } self_token(&self) -> Option<SyntaxToken>16 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } 17 } 18 19 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 20 pub struct NameRef { 21 pub(crate) syntax: SyntaxNode, 22 } 23 impl NameRef { ident_token(&self) -> Option<SyntaxToken>24 pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) } self_token(&self) -> Option<SyntaxToken>25 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) } super_token(&self) -> Option<SyntaxToken>26 pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) } crate_token(&self) -> Option<SyntaxToken>27 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } Self_token(&self) -> Option<SyntaxToken>28 pub fn Self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![Self]) } 29 } 30 31 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 32 pub struct Lifetime { 33 pub(crate) syntax: SyntaxNode, 34 } 35 impl Lifetime { lifetime_ident_token(&self) -> Option<SyntaxToken>36 pub fn lifetime_ident_token(&self) -> Option<SyntaxToken> { 37 support::token(&self.syntax, T![lifetime_ident]) 38 } 39 } 40 41 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 42 pub struct Path { 43 pub(crate) syntax: SyntaxNode, 44 } 45 impl Path { qualifier(&self) -> Option<Path>46 pub fn qualifier(&self) -> Option<Path> { support::child(&self.syntax) } coloncolon_token(&self) -> Option<SyntaxToken>47 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } segment(&self) -> Option<PathSegment>48 pub fn segment(&self) -> Option<PathSegment> { support::child(&self.syntax) } 49 } 50 51 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 52 pub struct PathSegment { 53 pub(crate) syntax: SyntaxNode, 54 } 55 impl PathSegment { coloncolon_token(&self) -> Option<SyntaxToken>56 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } name_ref(&self) -> Option<NameRef>57 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } generic_arg_list(&self) -> Option<GenericArgList>58 pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) } param_list(&self) -> Option<ParamList>59 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } ret_type(&self) -> Option<RetType>60 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } l_angle_token(&self) -> Option<SyntaxToken>61 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } path_type(&self) -> Option<PathType>62 pub fn path_type(&self) -> Option<PathType> { support::child(&self.syntax) } as_token(&self) -> Option<SyntaxToken>63 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } r_angle_token(&self) -> Option<SyntaxToken>64 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } 65 } 66 67 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 68 pub struct GenericArgList { 69 pub(crate) syntax: SyntaxNode, 70 } 71 impl GenericArgList { coloncolon_token(&self) -> Option<SyntaxToken>72 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } l_angle_token(&self) -> Option<SyntaxToken>73 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } generic_args(&self) -> AstChildren<GenericArg>74 pub fn generic_args(&self) -> AstChildren<GenericArg> { support::children(&self.syntax) } r_angle_token(&self) -> Option<SyntaxToken>75 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } 76 } 77 78 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 79 pub struct ParamList { 80 pub(crate) syntax: SyntaxNode, 81 } 82 impl ParamList { l_paren_token(&self) -> Option<SyntaxToken>83 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } self_param(&self) -> Option<SelfParam>84 pub fn self_param(&self) -> Option<SelfParam> { support::child(&self.syntax) } comma_token(&self) -> Option<SyntaxToken>85 pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) } params(&self) -> AstChildren<Param>86 pub fn params(&self) -> AstChildren<Param> { support::children(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>87 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } pipe_token(&self) -> Option<SyntaxToken>88 pub fn pipe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![|]) } 89 } 90 91 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 92 pub struct RetType { 93 pub(crate) syntax: SyntaxNode, 94 } 95 impl RetType { thin_arrow_token(&self) -> Option<SyntaxToken>96 pub fn thin_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![->]) } ty(&self) -> Option<Type>97 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 98 } 99 100 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 101 pub struct PathType { 102 pub(crate) syntax: SyntaxNode, 103 } 104 impl PathType { path(&self) -> Option<Path>105 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } 106 } 107 108 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 109 pub struct TypeArg { 110 pub(crate) syntax: SyntaxNode, 111 } 112 impl TypeArg { ty(&self) -> Option<Type>113 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 114 } 115 116 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 117 pub struct AssocTypeArg { 118 pub(crate) syntax: SyntaxNode, 119 } 120 impl ast::HasTypeBounds for AssocTypeArg {} 121 impl AssocTypeArg { name_ref(&self) -> Option<NameRef>122 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } generic_arg_list(&self) -> Option<GenericArgList>123 pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) } param_list(&self) -> Option<ParamList>124 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } ret_type(&self) -> Option<RetType>125 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>126 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } ty(&self) -> Option<Type>127 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } const_arg(&self) -> Option<ConstArg>128 pub fn const_arg(&self) -> Option<ConstArg> { support::child(&self.syntax) } 129 } 130 131 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 132 pub struct LifetimeArg { 133 pub(crate) syntax: SyntaxNode, 134 } 135 impl LifetimeArg { lifetime(&self) -> Option<Lifetime>136 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } 137 } 138 139 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 140 pub struct ConstArg { 141 pub(crate) syntax: SyntaxNode, 142 } 143 impl ConstArg { expr(&self) -> Option<Expr>144 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 145 } 146 147 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 148 pub struct TypeBoundList { 149 pub(crate) syntax: SyntaxNode, 150 } 151 impl TypeBoundList { bounds(&self) -> AstChildren<TypeBound>152 pub fn bounds(&self) -> AstChildren<TypeBound> { support::children(&self.syntax) } 153 } 154 155 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 156 pub struct MacroCall { 157 pub(crate) syntax: SyntaxNode, 158 } 159 impl ast::HasAttrs for MacroCall {} 160 impl ast::HasDocComments for MacroCall {} 161 impl MacroCall { path(&self) -> Option<Path>162 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } excl_token(&self) -> Option<SyntaxToken>163 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } token_tree(&self) -> Option<TokenTree>164 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>165 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 166 } 167 168 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 169 pub struct Attr { 170 pub(crate) syntax: SyntaxNode, 171 } 172 impl Attr { pound_token(&self) -> Option<SyntaxToken>173 pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) } excl_token(&self) -> Option<SyntaxToken>174 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } l_brack_token(&self) -> Option<SyntaxToken>175 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } meta(&self) -> Option<Meta>176 pub fn meta(&self) -> Option<Meta> { support::child(&self.syntax) } r_brack_token(&self) -> Option<SyntaxToken>177 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } 178 } 179 180 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 181 pub struct TokenTree { 182 pub(crate) syntax: SyntaxNode, 183 } 184 impl TokenTree { l_paren_token(&self) -> Option<SyntaxToken>185 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } r_paren_token(&self) -> Option<SyntaxToken>186 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } l_curly_token(&self) -> Option<SyntaxToken>187 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } r_curly_token(&self) -> Option<SyntaxToken>188 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } l_brack_token(&self) -> Option<SyntaxToken>189 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } r_brack_token(&self) -> Option<SyntaxToken>190 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } 191 } 192 193 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 194 pub struct MacroItems { 195 pub(crate) syntax: SyntaxNode, 196 } 197 impl ast::HasModuleItem for MacroItems {} 198 impl MacroItems {} 199 200 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 201 pub struct MacroStmts { 202 pub(crate) syntax: SyntaxNode, 203 } 204 impl MacroStmts { statements(&self) -> AstChildren<Stmt>205 pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) } expr(&self) -> Option<Expr>206 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 207 } 208 209 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 210 pub struct SourceFile { 211 pub(crate) syntax: SyntaxNode, 212 } 213 impl ast::HasAttrs for SourceFile {} 214 impl ast::HasModuleItem for SourceFile {} 215 impl ast::HasDocComments for SourceFile {} 216 impl SourceFile { shebang_token(&self) -> Option<SyntaxToken>217 pub fn shebang_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![shebang]) } 218 } 219 220 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 221 pub struct Const { 222 pub(crate) syntax: SyntaxNode, 223 } 224 impl ast::HasAttrs for Const {} 225 impl ast::HasName for Const {} 226 impl ast::HasVisibility for Const {} 227 impl ast::HasDocComments for Const {} 228 impl Const { default_token(&self) -> Option<SyntaxToken>229 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } const_token(&self) -> Option<SyntaxToken>230 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } underscore_token(&self) -> Option<SyntaxToken>231 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } colon_token(&self) -> Option<SyntaxToken>232 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>233 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>234 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } body(&self) -> Option<Expr>235 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>236 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 237 } 238 239 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 240 pub struct Enum { 241 pub(crate) syntax: SyntaxNode, 242 } 243 impl ast::HasAttrs for Enum {} 244 impl ast::HasName for Enum {} 245 impl ast::HasVisibility for Enum {} 246 impl ast::HasGenericParams for Enum {} 247 impl ast::HasDocComments for Enum {} 248 impl Enum { enum_token(&self) -> Option<SyntaxToken>249 pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) } variant_list(&self) -> Option<VariantList>250 pub fn variant_list(&self) -> Option<VariantList> { support::child(&self.syntax) } 251 } 252 253 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 254 pub struct ExternBlock { 255 pub(crate) syntax: SyntaxNode, 256 } 257 impl ast::HasAttrs for ExternBlock {} 258 impl ast::HasDocComments for ExternBlock {} 259 impl ExternBlock { unsafe_token(&self) -> Option<SyntaxToken>260 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } abi(&self) -> Option<Abi>261 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } extern_item_list(&self) -> Option<ExternItemList>262 pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) } 263 } 264 265 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 266 pub struct ExternCrate { 267 pub(crate) syntax: SyntaxNode, 268 } 269 impl ast::HasAttrs for ExternCrate {} 270 impl ast::HasVisibility for ExternCrate {} 271 impl ast::HasDocComments for ExternCrate {} 272 impl ExternCrate { extern_token(&self) -> Option<SyntaxToken>273 pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } crate_token(&self) -> Option<SyntaxToken>274 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) } name_ref(&self) -> Option<NameRef>275 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } rename(&self) -> Option<Rename>276 pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>277 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 278 } 279 280 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 281 pub struct Fn { 282 pub(crate) syntax: SyntaxNode, 283 } 284 impl ast::HasAttrs for Fn {} 285 impl ast::HasName for Fn {} 286 impl ast::HasVisibility for Fn {} 287 impl ast::HasGenericParams for Fn {} 288 impl ast::HasDocComments for Fn {} 289 impl Fn { default_token(&self) -> Option<SyntaxToken>290 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } const_token(&self) -> Option<SyntaxToken>291 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } async_token(&self) -> Option<SyntaxToken>292 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } unsafe_token(&self) -> Option<SyntaxToken>293 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } abi(&self) -> Option<Abi>294 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } fn_token(&self) -> Option<SyntaxToken>295 pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) } param_list(&self) -> Option<ParamList>296 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } ret_type(&self) -> Option<RetType>297 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } body(&self) -> Option<BlockExpr>298 pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>299 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 300 } 301 302 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 303 pub struct Impl { 304 pub(crate) syntax: SyntaxNode, 305 } 306 impl ast::HasAttrs for Impl {} 307 impl ast::HasVisibility for Impl {} 308 impl ast::HasGenericParams for Impl {} 309 impl ast::HasDocComments for Impl {} 310 impl Impl { default_token(&self) -> Option<SyntaxToken>311 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } unsafe_token(&self) -> Option<SyntaxToken>312 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } impl_token(&self) -> Option<SyntaxToken>313 pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } const_token(&self) -> Option<SyntaxToken>314 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } excl_token(&self) -> Option<SyntaxToken>315 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } for_token(&self) -> Option<SyntaxToken>316 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } assoc_item_list(&self) -> Option<AssocItemList>317 pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) } 318 } 319 320 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 321 pub struct MacroRules { 322 pub(crate) syntax: SyntaxNode, 323 } 324 impl ast::HasAttrs for MacroRules {} 325 impl ast::HasName for MacroRules {} 326 impl ast::HasVisibility for MacroRules {} 327 impl ast::HasDocComments for MacroRules {} 328 impl MacroRules { macro_rules_token(&self) -> Option<SyntaxToken>329 pub fn macro_rules_token(&self) -> Option<SyntaxToken> { 330 support::token(&self.syntax, T![macro_rules]) 331 } excl_token(&self) -> Option<SyntaxToken>332 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } token_tree(&self) -> Option<TokenTree>333 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } 334 } 335 336 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 337 pub struct MacroDef { 338 pub(crate) syntax: SyntaxNode, 339 } 340 impl ast::HasAttrs for MacroDef {} 341 impl ast::HasName for MacroDef {} 342 impl ast::HasVisibility for MacroDef {} 343 impl ast::HasDocComments for MacroDef {} 344 impl MacroDef { macro_token(&self) -> Option<SyntaxToken>345 pub fn macro_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![macro]) } args(&self) -> Option<TokenTree>346 pub fn args(&self) -> Option<TokenTree> { support::child(&self.syntax) } body(&self) -> Option<TokenTree>347 pub fn body(&self) -> Option<TokenTree> { support::child(&self.syntax) } 348 } 349 350 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 351 pub struct Module { 352 pub(crate) syntax: SyntaxNode, 353 } 354 impl ast::HasAttrs for Module {} 355 impl ast::HasName for Module {} 356 impl ast::HasVisibility for Module {} 357 impl ast::HasDocComments for Module {} 358 impl Module { mod_token(&self) -> Option<SyntaxToken>359 pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) } item_list(&self) -> Option<ItemList>360 pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>361 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 362 } 363 364 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 365 pub struct Static { 366 pub(crate) syntax: SyntaxNode, 367 } 368 impl ast::HasAttrs for Static {} 369 impl ast::HasName for Static {} 370 impl ast::HasVisibility for Static {} 371 impl ast::HasDocComments for Static {} 372 impl Static { static_token(&self) -> Option<SyntaxToken>373 pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } mut_token(&self) -> Option<SyntaxToken>374 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } colon_token(&self) -> Option<SyntaxToken>375 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>376 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>377 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } body(&self) -> Option<Expr>378 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>379 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 380 } 381 382 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 383 pub struct Struct { 384 pub(crate) syntax: SyntaxNode, 385 } 386 impl ast::HasAttrs for Struct {} 387 impl ast::HasName for Struct {} 388 impl ast::HasVisibility for Struct {} 389 impl ast::HasGenericParams for Struct {} 390 impl ast::HasDocComments for Struct {} 391 impl Struct { struct_token(&self) -> Option<SyntaxToken>392 pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) } semicolon_token(&self) -> Option<SyntaxToken>393 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } field_list(&self) -> Option<FieldList>394 pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) } 395 } 396 397 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 398 pub struct Trait { 399 pub(crate) syntax: SyntaxNode, 400 } 401 impl ast::HasAttrs for Trait {} 402 impl ast::HasName for Trait {} 403 impl ast::HasVisibility for Trait {} 404 impl ast::HasGenericParams for Trait {} 405 impl ast::HasTypeBounds for Trait {} 406 impl ast::HasDocComments for Trait {} 407 impl Trait { unsafe_token(&self) -> Option<SyntaxToken>408 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } auto_token(&self) -> Option<SyntaxToken>409 pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) } trait_token(&self) -> Option<SyntaxToken>410 pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) } assoc_item_list(&self) -> Option<AssocItemList>411 pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) } 412 } 413 414 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 415 pub struct TraitAlias { 416 pub(crate) syntax: SyntaxNode, 417 } 418 impl ast::HasAttrs for TraitAlias {} 419 impl ast::HasName for TraitAlias {} 420 impl ast::HasVisibility for TraitAlias {} 421 impl ast::HasGenericParams for TraitAlias {} 422 impl ast::HasDocComments for TraitAlias {} 423 impl TraitAlias { trait_token(&self) -> Option<SyntaxToken>424 pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) } eq_token(&self) -> Option<SyntaxToken>425 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } type_bound_list(&self) -> Option<TypeBoundList>426 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>427 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 428 } 429 430 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 431 pub struct TypeAlias { 432 pub(crate) syntax: SyntaxNode, 433 } 434 impl ast::HasAttrs for TypeAlias {} 435 impl ast::HasName for TypeAlias {} 436 impl ast::HasVisibility for TypeAlias {} 437 impl ast::HasGenericParams for TypeAlias {} 438 impl ast::HasTypeBounds for TypeAlias {} 439 impl ast::HasDocComments for TypeAlias {} 440 impl TypeAlias { default_token(&self) -> Option<SyntaxToken>441 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } type_token(&self) -> Option<SyntaxToken>442 pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) } eq_token(&self) -> Option<SyntaxToken>443 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } ty(&self) -> Option<Type>444 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>445 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 446 } 447 448 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 449 pub struct Union { 450 pub(crate) syntax: SyntaxNode, 451 } 452 impl ast::HasAttrs for Union {} 453 impl ast::HasName for Union {} 454 impl ast::HasVisibility for Union {} 455 impl ast::HasGenericParams for Union {} 456 impl ast::HasDocComments for Union {} 457 impl Union { union_token(&self) -> Option<SyntaxToken>458 pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) } record_field_list(&self) -> Option<RecordFieldList>459 pub fn record_field_list(&self) -> Option<RecordFieldList> { support::child(&self.syntax) } 460 } 461 462 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 463 pub struct Use { 464 pub(crate) syntax: SyntaxNode, 465 } 466 impl ast::HasAttrs for Use {} 467 impl ast::HasVisibility for Use {} 468 impl ast::HasDocComments for Use {} 469 impl Use { use_token(&self) -> Option<SyntaxToken>470 pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) } use_tree(&self) -> Option<UseTree>471 pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>472 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 473 } 474 475 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 476 pub struct Visibility { 477 pub(crate) syntax: SyntaxNode, 478 } 479 impl Visibility { pub_token(&self) -> Option<SyntaxToken>480 pub fn pub_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pub]) } l_paren_token(&self) -> Option<SyntaxToken>481 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } in_token(&self) -> Option<SyntaxToken>482 pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) } path(&self) -> Option<Path>483 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>484 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } 485 } 486 487 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 488 pub struct ItemList { 489 pub(crate) syntax: SyntaxNode, 490 } 491 impl ast::HasAttrs for ItemList {} 492 impl ast::HasModuleItem for ItemList {} 493 impl ItemList { l_curly_token(&self) -> Option<SyntaxToken>494 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } r_curly_token(&self) -> Option<SyntaxToken>495 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 496 } 497 498 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 499 pub struct Rename { 500 pub(crate) syntax: SyntaxNode, 501 } 502 impl ast::HasName for Rename {} 503 impl Rename { as_token(&self) -> Option<SyntaxToken>504 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } underscore_token(&self) -> Option<SyntaxToken>505 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } 506 } 507 508 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 509 pub struct UseTree { 510 pub(crate) syntax: SyntaxNode, 511 } 512 impl UseTree { path(&self) -> Option<Path>513 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } coloncolon_token(&self) -> Option<SyntaxToken>514 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) } star_token(&self) -> Option<SyntaxToken>515 pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) } use_tree_list(&self) -> Option<UseTreeList>516 pub fn use_tree_list(&self) -> Option<UseTreeList> { support::child(&self.syntax) } rename(&self) -> Option<Rename>517 pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) } 518 } 519 520 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 521 pub struct UseTreeList { 522 pub(crate) syntax: SyntaxNode, 523 } 524 impl UseTreeList { l_curly_token(&self) -> Option<SyntaxToken>525 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } use_trees(&self) -> AstChildren<UseTree>526 pub fn use_trees(&self) -> AstChildren<UseTree> { support::children(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>527 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 528 } 529 530 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 531 pub struct Abi { 532 pub(crate) syntax: SyntaxNode, 533 } 534 impl Abi { extern_token(&self) -> Option<SyntaxToken>535 pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) } 536 } 537 538 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 539 pub struct GenericParamList { 540 pub(crate) syntax: SyntaxNode, 541 } 542 impl GenericParamList { l_angle_token(&self) -> Option<SyntaxToken>543 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) } generic_params(&self) -> AstChildren<GenericParam>544 pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) } r_angle_token(&self) -> Option<SyntaxToken>545 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) } 546 } 547 548 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 549 pub struct WhereClause { 550 pub(crate) syntax: SyntaxNode, 551 } 552 impl WhereClause { where_token(&self) -> Option<SyntaxToken>553 pub fn where_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![where]) } predicates(&self) -> AstChildren<WherePred>554 pub fn predicates(&self) -> AstChildren<WherePred> { support::children(&self.syntax) } 555 } 556 557 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 558 pub struct BlockExpr { 559 pub(crate) syntax: SyntaxNode, 560 } 561 impl ast::HasAttrs for BlockExpr {} 562 impl BlockExpr { label(&self) -> Option<Label>563 pub fn label(&self) -> Option<Label> { support::child(&self.syntax) } try_token(&self) -> Option<SyntaxToken>564 pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) } unsafe_token(&self) -> Option<SyntaxToken>565 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } async_token(&self) -> Option<SyntaxToken>566 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } const_token(&self) -> Option<SyntaxToken>567 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } stmt_list(&self) -> Option<StmtList>568 pub fn stmt_list(&self) -> Option<StmtList> { support::child(&self.syntax) } 569 } 570 571 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 572 pub struct SelfParam { 573 pub(crate) syntax: SyntaxNode, 574 } 575 impl ast::HasAttrs for SelfParam {} 576 impl ast::HasName for SelfParam {} 577 impl SelfParam { amp_token(&self) -> Option<SyntaxToken>578 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } lifetime(&self) -> Option<Lifetime>579 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } mut_token(&self) -> Option<SyntaxToken>580 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } colon_token(&self) -> Option<SyntaxToken>581 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>582 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 583 } 584 585 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 586 pub struct Param { 587 pub(crate) syntax: SyntaxNode, 588 } 589 impl ast::HasAttrs for Param {} 590 impl Param { pat(&self) -> Option<Pat>591 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } colon_token(&self) -> Option<SyntaxToken>592 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>593 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } dotdotdot_token(&self) -> Option<SyntaxToken>594 pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) } 595 } 596 597 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 598 pub struct RecordFieldList { 599 pub(crate) syntax: SyntaxNode, 600 } 601 impl RecordFieldList { l_curly_token(&self) -> Option<SyntaxToken>602 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } fields(&self) -> AstChildren<RecordField>603 pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>604 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 605 } 606 607 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 608 pub struct TupleFieldList { 609 pub(crate) syntax: SyntaxNode, 610 } 611 impl TupleFieldList { l_paren_token(&self) -> Option<SyntaxToken>612 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } fields(&self) -> AstChildren<TupleField>613 pub fn fields(&self) -> AstChildren<TupleField> { support::children(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>614 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } 615 } 616 617 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 618 pub struct RecordField { 619 pub(crate) syntax: SyntaxNode, 620 } 621 impl ast::HasAttrs for RecordField {} 622 impl ast::HasName for RecordField {} 623 impl ast::HasVisibility for RecordField {} 624 impl ast::HasDocComments for RecordField {} 625 impl RecordField { colon_token(&self) -> Option<SyntaxToken>626 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>627 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 628 } 629 630 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 631 pub struct TupleField { 632 pub(crate) syntax: SyntaxNode, 633 } 634 impl ast::HasAttrs for TupleField {} 635 impl ast::HasVisibility for TupleField {} 636 impl ast::HasDocComments for TupleField {} 637 impl TupleField { ty(&self) -> Option<Type>638 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 639 } 640 641 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 642 pub struct VariantList { 643 pub(crate) syntax: SyntaxNode, 644 } 645 impl VariantList { l_curly_token(&self) -> Option<SyntaxToken>646 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } variants(&self) -> AstChildren<Variant>647 pub fn variants(&self) -> AstChildren<Variant> { support::children(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>648 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 649 } 650 651 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 652 pub struct Variant { 653 pub(crate) syntax: SyntaxNode, 654 } 655 impl ast::HasAttrs for Variant {} 656 impl ast::HasName for Variant {} 657 impl ast::HasVisibility for Variant {} 658 impl ast::HasDocComments for Variant {} 659 impl Variant { field_list(&self) -> Option<FieldList>660 pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>661 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } expr(&self) -> Option<Expr>662 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 663 } 664 665 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 666 pub struct AssocItemList { 667 pub(crate) syntax: SyntaxNode, 668 } 669 impl ast::HasAttrs for AssocItemList {} 670 impl AssocItemList { l_curly_token(&self) -> Option<SyntaxToken>671 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } assoc_items(&self) -> AstChildren<AssocItem>672 pub fn assoc_items(&self) -> AstChildren<AssocItem> { support::children(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>673 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 674 } 675 676 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 677 pub struct ExternItemList { 678 pub(crate) syntax: SyntaxNode, 679 } 680 impl ast::HasAttrs for ExternItemList {} 681 impl ExternItemList { l_curly_token(&self) -> Option<SyntaxToken>682 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } extern_items(&self) -> AstChildren<ExternItem>683 pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>684 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 685 } 686 687 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 688 pub struct ConstParam { 689 pub(crate) syntax: SyntaxNode, 690 } 691 impl ast::HasAttrs for ConstParam {} 692 impl ast::HasName for ConstParam {} 693 impl ConstParam { const_token(&self) -> Option<SyntaxToken>694 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } colon_token(&self) -> Option<SyntaxToken>695 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>696 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>697 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } default_val(&self) -> Option<Expr>698 pub fn default_val(&self) -> Option<Expr> { support::child(&self.syntax) } 699 } 700 701 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 702 pub struct LifetimeParam { 703 pub(crate) syntax: SyntaxNode, 704 } 705 impl ast::HasAttrs for LifetimeParam {} 706 impl ast::HasTypeBounds for LifetimeParam {} 707 impl LifetimeParam { lifetime(&self) -> Option<Lifetime>708 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } 709 } 710 711 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 712 pub struct TypeParam { 713 pub(crate) syntax: SyntaxNode, 714 } 715 impl ast::HasAttrs for TypeParam {} 716 impl ast::HasName for TypeParam {} 717 impl ast::HasTypeBounds for TypeParam {} 718 impl TypeParam { eq_token(&self) -> Option<SyntaxToken>719 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } default_type(&self) -> Option<Type>720 pub fn default_type(&self) -> Option<Type> { support::child(&self.syntax) } 721 } 722 723 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 724 pub struct WherePred { 725 pub(crate) syntax: SyntaxNode, 726 } 727 impl ast::HasTypeBounds for WherePred {} 728 impl WherePred { for_token(&self) -> Option<SyntaxToken>729 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } generic_param_list(&self) -> Option<GenericParamList>730 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) } lifetime(&self) -> Option<Lifetime>731 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } ty(&self) -> Option<Type>732 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 733 } 734 735 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 736 pub struct Meta { 737 pub(crate) syntax: SyntaxNode, 738 } 739 impl Meta { path(&self) -> Option<Path>740 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>741 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } expr(&self) -> Option<Expr>742 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } token_tree(&self) -> Option<TokenTree>743 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) } 744 } 745 746 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 747 pub struct ExprStmt { 748 pub(crate) syntax: SyntaxNode, 749 } 750 impl ExprStmt { expr(&self) -> Option<Expr>751 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>752 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 753 } 754 755 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 756 pub struct LetStmt { 757 pub(crate) syntax: SyntaxNode, 758 } 759 impl ast::HasAttrs for LetStmt {} 760 impl LetStmt { let_token(&self) -> Option<SyntaxToken>761 pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) } pat(&self) -> Option<Pat>762 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } colon_token(&self) -> Option<SyntaxToken>763 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } ty(&self) -> Option<Type>764 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>765 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } initializer(&self) -> Option<Expr>766 pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) } let_else(&self) -> Option<LetElse>767 pub fn let_else(&self) -> Option<LetElse> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>768 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } 769 } 770 771 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 772 pub struct LetElse { 773 pub(crate) syntax: SyntaxNode, 774 } 775 impl LetElse { else_token(&self) -> Option<SyntaxToken>776 pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) } block_expr(&self) -> Option<BlockExpr>777 pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) } 778 } 779 780 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 781 pub struct ArrayExpr { 782 pub(crate) syntax: SyntaxNode, 783 } 784 impl ast::HasAttrs for ArrayExpr {} 785 impl ArrayExpr { l_brack_token(&self) -> Option<SyntaxToken>786 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } exprs(&self) -> AstChildren<Expr>787 pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) } expr(&self) -> Option<Expr>788 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>789 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } r_brack_token(&self) -> Option<SyntaxToken>790 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } 791 } 792 793 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 794 pub struct AwaitExpr { 795 pub(crate) syntax: SyntaxNode, 796 } 797 impl ast::HasAttrs for AwaitExpr {} 798 impl AwaitExpr { expr(&self) -> Option<Expr>799 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } dot_token(&self) -> Option<SyntaxToken>800 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } await_token(&self) -> Option<SyntaxToken>801 pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) } 802 } 803 804 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 805 pub struct BinExpr { 806 pub(crate) syntax: SyntaxNode, 807 } 808 impl ast::HasAttrs for BinExpr {} 809 impl BinExpr {} 810 811 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 812 pub struct BoxExpr { 813 pub(crate) syntax: SyntaxNode, 814 } 815 impl ast::HasAttrs for BoxExpr {} 816 impl BoxExpr { box_token(&self) -> Option<SyntaxToken>817 pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) } expr(&self) -> Option<Expr>818 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 819 } 820 821 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 822 pub struct BreakExpr { 823 pub(crate) syntax: SyntaxNode, 824 } 825 impl ast::HasAttrs for BreakExpr {} 826 impl BreakExpr { break_token(&self) -> Option<SyntaxToken>827 pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) } lifetime(&self) -> Option<Lifetime>828 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } expr(&self) -> Option<Expr>829 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 830 } 831 832 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 833 pub struct CallExpr { 834 pub(crate) syntax: SyntaxNode, 835 } 836 impl ast::HasAttrs for CallExpr {} 837 impl ast::HasArgList for CallExpr {} 838 impl CallExpr { expr(&self) -> Option<Expr>839 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 840 } 841 842 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 843 pub struct CastExpr { 844 pub(crate) syntax: SyntaxNode, 845 } 846 impl ast::HasAttrs for CastExpr {} 847 impl CastExpr { expr(&self) -> Option<Expr>848 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } as_token(&self) -> Option<SyntaxToken>849 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) } ty(&self) -> Option<Type>850 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 851 } 852 853 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 854 pub struct ClosureExpr { 855 pub(crate) syntax: SyntaxNode, 856 } 857 impl ast::HasAttrs for ClosureExpr {} 858 impl ClosureExpr { for_token(&self) -> Option<SyntaxToken>859 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } generic_param_list(&self) -> Option<GenericParamList>860 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) } const_token(&self) -> Option<SyntaxToken>861 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } static_token(&self) -> Option<SyntaxToken>862 pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } async_token(&self) -> Option<SyntaxToken>863 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } move_token(&self) -> Option<SyntaxToken>864 pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) } param_list(&self) -> Option<ParamList>865 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } ret_type(&self) -> Option<RetType>866 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } body(&self) -> Option<Expr>867 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } 868 } 869 870 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 871 pub struct ContinueExpr { 872 pub(crate) syntax: SyntaxNode, 873 } 874 impl ast::HasAttrs for ContinueExpr {} 875 impl ContinueExpr { continue_token(&self) -> Option<SyntaxToken>876 pub fn continue_token(&self) -> Option<SyntaxToken> { 877 support::token(&self.syntax, T![continue]) 878 } lifetime(&self) -> Option<Lifetime>879 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } 880 } 881 882 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 883 pub struct FieldExpr { 884 pub(crate) syntax: SyntaxNode, 885 } 886 impl ast::HasAttrs for FieldExpr {} 887 impl FieldExpr { expr(&self) -> Option<Expr>888 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } dot_token(&self) -> Option<SyntaxToken>889 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } name_ref(&self) -> Option<NameRef>890 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } 891 } 892 893 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 894 pub struct ForExpr { 895 pub(crate) syntax: SyntaxNode, 896 } 897 impl ast::HasAttrs for ForExpr {} 898 impl ForExpr { for_token(&self) -> Option<SyntaxToken>899 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } pat(&self) -> Option<Pat>900 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } in_token(&self) -> Option<SyntaxToken>901 pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) } 902 } 903 904 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 905 pub struct IfExpr { 906 pub(crate) syntax: SyntaxNode, 907 } 908 impl ast::HasAttrs for IfExpr {} 909 impl IfExpr { if_token(&self) -> Option<SyntaxToken>910 pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) } else_token(&self) -> Option<SyntaxToken>911 pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) } 912 } 913 914 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 915 pub struct IndexExpr { 916 pub(crate) syntax: SyntaxNode, 917 } 918 impl ast::HasAttrs for IndexExpr {} 919 impl IndexExpr { l_brack_token(&self) -> Option<SyntaxToken>920 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } r_brack_token(&self) -> Option<SyntaxToken>921 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } 922 } 923 924 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 925 pub struct Literal { 926 pub(crate) syntax: SyntaxNode, 927 } 928 impl ast::HasAttrs for Literal {} 929 impl Literal {} 930 931 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 932 pub struct LoopExpr { 933 pub(crate) syntax: SyntaxNode, 934 } 935 impl ast::HasAttrs for LoopExpr {} 936 impl ast::HasLoopBody for LoopExpr {} 937 impl LoopExpr { loop_token(&self) -> Option<SyntaxToken>938 pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) } 939 } 940 941 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 942 pub struct MacroExpr { 943 pub(crate) syntax: SyntaxNode, 944 } 945 impl MacroExpr { macro_call(&self) -> Option<MacroCall>946 pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) } 947 } 948 949 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 950 pub struct MatchExpr { 951 pub(crate) syntax: SyntaxNode, 952 } 953 impl ast::HasAttrs for MatchExpr {} 954 impl MatchExpr { match_token(&self) -> Option<SyntaxToken>955 pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) } expr(&self) -> Option<Expr>956 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } match_arm_list(&self) -> Option<MatchArmList>957 pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) } 958 } 959 960 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 961 pub struct MethodCallExpr { 962 pub(crate) syntax: SyntaxNode, 963 } 964 impl ast::HasAttrs for MethodCallExpr {} 965 impl ast::HasArgList for MethodCallExpr {} 966 impl MethodCallExpr { receiver(&self) -> Option<Expr>967 pub fn receiver(&self) -> Option<Expr> { support::child(&self.syntax) } dot_token(&self) -> Option<SyntaxToken>968 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) } name_ref(&self) -> Option<NameRef>969 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } generic_arg_list(&self) -> Option<GenericArgList>970 pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) } 971 } 972 973 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 974 pub struct ParenExpr { 975 pub(crate) syntax: SyntaxNode, 976 } 977 impl ast::HasAttrs for ParenExpr {} 978 impl ParenExpr { l_paren_token(&self) -> Option<SyntaxToken>979 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } expr(&self) -> Option<Expr>980 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>981 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } 982 } 983 984 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 985 pub struct PathExpr { 986 pub(crate) syntax: SyntaxNode, 987 } 988 impl ast::HasAttrs for PathExpr {} 989 impl PathExpr { path(&self) -> Option<Path>990 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } 991 } 992 993 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 994 pub struct PrefixExpr { 995 pub(crate) syntax: SyntaxNode, 996 } 997 impl ast::HasAttrs for PrefixExpr {} 998 impl PrefixExpr { expr(&self) -> Option<Expr>999 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1000 } 1001 1002 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1003 pub struct RangeExpr { 1004 pub(crate) syntax: SyntaxNode, 1005 } 1006 impl ast::HasAttrs for RangeExpr {} 1007 impl RangeExpr {} 1008 1009 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1010 pub struct RecordExpr { 1011 pub(crate) syntax: SyntaxNode, 1012 } 1013 impl RecordExpr { path(&self) -> Option<Path>1014 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) } record_expr_field_list(&self) -> Option<RecordExprFieldList>1015 pub fn record_expr_field_list(&self) -> Option<RecordExprFieldList> { 1016 support::child(&self.syntax) 1017 } 1018 } 1019 1020 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1021 pub struct RefExpr { 1022 pub(crate) syntax: SyntaxNode, 1023 } 1024 impl ast::HasAttrs for RefExpr {} 1025 impl RefExpr { amp_token(&self) -> Option<SyntaxToken>1026 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } raw_token(&self) -> Option<SyntaxToken>1027 pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) } mut_token(&self) -> Option<SyntaxToken>1028 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } const_token(&self) -> Option<SyntaxToken>1029 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } expr(&self) -> Option<Expr>1030 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1031 } 1032 1033 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1034 pub struct ReturnExpr { 1035 pub(crate) syntax: SyntaxNode, 1036 } 1037 impl ast::HasAttrs for ReturnExpr {} 1038 impl ReturnExpr { return_token(&self) -> Option<SyntaxToken>1039 pub fn return_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![return]) } expr(&self) -> Option<Expr>1040 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1041 } 1042 1043 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1044 pub struct TryExpr { 1045 pub(crate) syntax: SyntaxNode, 1046 } 1047 impl ast::HasAttrs for TryExpr {} 1048 impl TryExpr { expr(&self) -> Option<Expr>1049 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } question_mark_token(&self) -> Option<SyntaxToken>1050 pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) } 1051 } 1052 1053 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1054 pub struct TupleExpr { 1055 pub(crate) syntax: SyntaxNode, 1056 } 1057 impl ast::HasAttrs for TupleExpr {} 1058 impl TupleExpr { l_paren_token(&self) -> Option<SyntaxToken>1059 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } fields(&self) -> AstChildren<Expr>1060 pub fn fields(&self) -> AstChildren<Expr> { support::children(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>1061 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } 1062 } 1063 1064 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1065 pub struct WhileExpr { 1066 pub(crate) syntax: SyntaxNode, 1067 } 1068 impl ast::HasAttrs for WhileExpr {} 1069 impl WhileExpr { while_token(&self) -> Option<SyntaxToken>1070 pub fn while_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![while]) } 1071 } 1072 1073 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1074 pub struct YieldExpr { 1075 pub(crate) syntax: SyntaxNode, 1076 } 1077 impl ast::HasAttrs for YieldExpr {} 1078 impl YieldExpr { yield_token(&self) -> Option<SyntaxToken>1079 pub fn yield_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![yield]) } expr(&self) -> Option<Expr>1080 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1081 } 1082 1083 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1084 pub struct YeetExpr { 1085 pub(crate) syntax: SyntaxNode, 1086 } 1087 impl ast::HasAttrs for YeetExpr {} 1088 impl YeetExpr { do_token(&self) -> Option<SyntaxToken>1089 pub fn do_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![do]) } yeet_token(&self) -> Option<SyntaxToken>1090 pub fn yeet_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![yeet]) } expr(&self) -> Option<Expr>1091 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1092 } 1093 1094 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1095 pub struct LetExpr { 1096 pub(crate) syntax: SyntaxNode, 1097 } 1098 impl ast::HasAttrs for LetExpr {} 1099 impl LetExpr { let_token(&self) -> Option<SyntaxToken>1100 pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) } pat(&self) -> Option<Pat>1101 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } eq_token(&self) -> Option<SyntaxToken>1102 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } expr(&self) -> Option<Expr>1103 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1104 } 1105 1106 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1107 pub struct UnderscoreExpr { 1108 pub(crate) syntax: SyntaxNode, 1109 } 1110 impl ast::HasAttrs for UnderscoreExpr {} 1111 impl UnderscoreExpr { underscore_token(&self) -> Option<SyntaxToken>1112 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } 1113 } 1114 1115 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1116 pub struct StmtList { 1117 pub(crate) syntax: SyntaxNode, 1118 } 1119 impl ast::HasAttrs for StmtList {} 1120 impl StmtList { l_curly_token(&self) -> Option<SyntaxToken>1121 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } statements(&self) -> AstChildren<Stmt>1122 pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) } tail_expr(&self) -> Option<Expr>1123 pub fn tail_expr(&self) -> Option<Expr> { support::child(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>1124 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 1125 } 1126 1127 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1128 pub struct Label { 1129 pub(crate) syntax: SyntaxNode, 1130 } 1131 impl Label { lifetime(&self) -> Option<Lifetime>1132 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } colon_token(&self) -> Option<SyntaxToken>1133 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } 1134 } 1135 1136 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1137 pub struct RecordExprFieldList { 1138 pub(crate) syntax: SyntaxNode, 1139 } 1140 impl ast::HasAttrs for RecordExprFieldList {} 1141 impl RecordExprFieldList { l_curly_token(&self) -> Option<SyntaxToken>1142 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } fields(&self) -> AstChildren<RecordExprField>1143 pub fn fields(&self) -> AstChildren<RecordExprField> { support::children(&self.syntax) } dotdot_token(&self) -> Option<SyntaxToken>1144 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) } spread(&self) -> Option<Expr>1145 pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>1146 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 1147 } 1148 1149 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1150 pub struct RecordExprField { 1151 pub(crate) syntax: SyntaxNode, 1152 } 1153 impl ast::HasAttrs for RecordExprField {} 1154 impl RecordExprField { name_ref(&self) -> Option<NameRef>1155 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) } colon_token(&self) -> Option<SyntaxToken>1156 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } expr(&self) -> Option<Expr>1157 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } 1158 } 1159 1160 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1161 pub struct ArgList { 1162 pub(crate) syntax: SyntaxNode, 1163 } 1164 impl ArgList { l_paren_token(&self) -> Option<SyntaxToken>1165 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } args(&self) -> AstChildren<Expr>1166 pub fn args(&self) -> AstChildren<Expr> { support::children(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>1167 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } 1168 } 1169 1170 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1171 pub struct MatchArmList { 1172 pub(crate) syntax: SyntaxNode, 1173 } 1174 impl ast::HasAttrs for MatchArmList {} 1175 impl MatchArmList { l_curly_token(&self) -> Option<SyntaxToken>1176 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) } arms(&self) -> AstChildren<MatchArm>1177 pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) } r_curly_token(&self) -> Option<SyntaxToken>1178 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) } 1179 } 1180 1181 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1182 pub struct MatchArm { 1183 pub(crate) syntax: SyntaxNode, 1184 } 1185 impl ast::HasAttrs for MatchArm {} 1186 impl MatchArm { pat(&self) -> Option<Pat>1187 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) } guard(&self) -> Option<MatchGuard>1188 pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) } fat_arrow_token(&self) -> Option<SyntaxToken>1189 pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) } expr(&self) -> Option<Expr>1190 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) } comma_token(&self) -> Option<SyntaxToken>1191 pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) } 1192 } 1193 1194 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1195 pub struct MatchGuard { 1196 pub(crate) syntax: SyntaxNode, 1197 } 1198 impl MatchGuard { if_token(&self) -> Option<SyntaxToken>1199 pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) } 1200 } 1201 1202 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1203 pub struct ArrayType { 1204 pub(crate) syntax: SyntaxNode, 1205 } 1206 impl ArrayType { l_brack_token(&self) -> Option<SyntaxToken>1207 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } ty(&self) -> Option<Type>1208 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } semicolon_token(&self) -> Option<SyntaxToken>1209 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } const_arg(&self) -> Option<ConstArg>1210 pub fn const_arg(&self) -> Option<ConstArg> { support::child(&self.syntax) } r_brack_token(&self) -> Option<SyntaxToken>1211 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } 1212 } 1213 1214 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1215 pub struct DynTraitType { 1216 pub(crate) syntax: SyntaxNode, 1217 } 1218 impl DynTraitType { dyn_token(&self) -> Option<SyntaxToken>1219 pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) } type_bound_list(&self) -> Option<TypeBoundList>1220 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) } 1221 } 1222 1223 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1224 pub struct FnPtrType { 1225 pub(crate) syntax: SyntaxNode, 1226 } 1227 impl FnPtrType { const_token(&self) -> Option<SyntaxToken>1228 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } async_token(&self) -> Option<SyntaxToken>1229 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) } unsafe_token(&self) -> Option<SyntaxToken>1230 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) } abi(&self) -> Option<Abi>1231 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) } fn_token(&self) -> Option<SyntaxToken>1232 pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) } param_list(&self) -> Option<ParamList>1233 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) } ret_type(&self) -> Option<RetType>1234 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) } 1235 } 1236 1237 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1238 pub struct ForType { 1239 pub(crate) syntax: SyntaxNode, 1240 } 1241 impl ForType { for_token(&self) -> Option<SyntaxToken>1242 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) } generic_param_list(&self) -> Option<GenericParamList>1243 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) } ty(&self) -> Option<Type>1244 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 1245 } 1246 1247 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1248 pub struct ImplTraitType { 1249 pub(crate) syntax: SyntaxNode, 1250 } 1251 impl ImplTraitType { impl_token(&self) -> Option<SyntaxToken>1252 pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) } type_bound_list(&self) -> Option<TypeBoundList>1253 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) } 1254 } 1255 1256 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1257 pub struct InferType { 1258 pub(crate) syntax: SyntaxNode, 1259 } 1260 impl InferType { underscore_token(&self) -> Option<SyntaxToken>1261 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) } 1262 } 1263 1264 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1265 pub struct MacroType { 1266 pub(crate) syntax: SyntaxNode, 1267 } 1268 impl MacroType { macro_call(&self) -> Option<MacroCall>1269 pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) } 1270 } 1271 1272 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1273 pub struct NeverType { 1274 pub(crate) syntax: SyntaxNode, 1275 } 1276 impl NeverType { excl_token(&self) -> Option<SyntaxToken>1277 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) } 1278 } 1279 1280 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1281 pub struct ParenType { 1282 pub(crate) syntax: SyntaxNode, 1283 } 1284 impl ParenType { l_paren_token(&self) -> Option<SyntaxToken>1285 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) } ty(&self) -> Option<Type>1286 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } r_paren_token(&self) -> Option<SyntaxToken>1287 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) } 1288 } 1289 1290 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1291 pub struct PtrType { 1292 pub(crate) syntax: SyntaxNode, 1293 } 1294 impl PtrType { star_token(&self) -> Option<SyntaxToken>1295 pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) } const_token(&self) -> Option<SyntaxToken>1296 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } mut_token(&self) -> Option<SyntaxToken>1297 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } ty(&self) -> Option<Type>1298 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 1299 } 1300 1301 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1302 pub struct RefType { 1303 pub(crate) syntax: SyntaxNode, 1304 } 1305 impl RefType { amp_token(&self) -> Option<SyntaxToken>1306 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) } lifetime(&self) -> Option<Lifetime>1307 pub fn lifetime(&self) -> Option<Lifetime> { support::child(&self.syntax) } mut_token(&self) -> Option<SyntaxToken>1308 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } ty(&self) -> Option<Type>1309 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } 1310 } 1311 1312 #[derive(Debug, Clone, PartialEq, Eq, Hash)] 1313 pub struct SliceType { 1314 pub(crate) syntax: SyntaxNode, 1315 } 1316 impl SliceType { l_brack_token(&self) -> Option<SyntaxToken>1317 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) } ty(&self) -> Option<Type>1318 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) } r_brack_token(&self) -> Option<SyntaxToken>1319