1 //! Generated file, do not edit by hand, see `xtask/src/codegen`
4 ast::{self, support, AstChildren, AstNode},
6 SyntaxNode, SyntaxToken, T,
8 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
10 pub(crate) syntax: SyntaxNode,
13 pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }
15 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
17 pub(crate) syntax: SyntaxNode,
20 pub fn ident_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ident]) }
22 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
24 pub(crate) syntax: SyntaxNode,
27 pub fn qualifier(&self) -> Option<Path> { support::child(&self.syntax) }
28 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
29 pub fn segment(&self) -> Option<PathSegment> { support::child(&self.syntax) }
31 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
32 pub struct PathSegment {
33 pub(crate) syntax: SyntaxNode,
36 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
37 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
38 pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) }
39 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
40 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
41 pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) }
42 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
43 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
44 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
45 pub fn path_type(&self) -> Option<PathType> { support::child(&self.syntax) }
46 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
47 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
49 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
50 pub struct GenericArgList {
51 pub(crate) syntax: SyntaxNode,
54 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
55 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
56 pub fn generic_args(&self) -> AstChildren<GenericArg> { support::children(&self.syntax) }
57 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
59 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
60 pub struct ParamList {
61 pub(crate) syntax: SyntaxNode,
64 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
65 pub fn self_param(&self) -> Option<SelfParam> { support::child(&self.syntax) }
66 pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }
67 pub fn params(&self) -> AstChildren<Param> { support::children(&self.syntax) }
68 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
69 pub fn pipe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![|]) }
71 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
73 pub(crate) syntax: SyntaxNode,
76 pub fn thin_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![->]) }
77 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
79 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
81 pub(crate) syntax: SyntaxNode,
84 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
86 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
88 pub(crate) syntax: SyntaxNode,
91 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
93 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
94 pub struct AssocTypeArg {
95 pub(crate) syntax: SyntaxNode,
97 impl ast::TypeBoundsOwner for AssocTypeArg {}
99 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
100 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
101 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
103 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
104 pub struct LifetimeArg {
105 pub(crate) syntax: SyntaxNode,
108 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
109 support::token(&self.syntax, T![lifetime])
112 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
113 pub struct ConstArg {
114 pub(crate) syntax: SyntaxNode,
117 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
119 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
120 pub struct TypeBoundList {
121 pub(crate) syntax: SyntaxNode,
124 pub fn bounds(&self) -> AstChildren<TypeBound> { support::children(&self.syntax) }
126 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
127 pub struct MacroCall {
128 pub(crate) syntax: SyntaxNode,
130 impl ast::AttrsOwner for MacroCall {}
132 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
133 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
134 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
135 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
137 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
139 pub(crate) syntax: SyntaxNode,
142 pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }
143 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
144 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
145 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
146 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
147 pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }
148 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
149 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
151 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
152 pub struct TokenTree {
153 pub(crate) syntax: SyntaxNode,
156 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
157 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
158 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
159 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
160 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
161 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
163 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
164 pub struct MacroItems {
165 pub(crate) syntax: SyntaxNode,
167 impl ast::ModuleItemOwner for MacroItems {}
169 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
170 pub struct MacroStmts {
171 pub(crate) syntax: SyntaxNode,
174 pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }
175 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
177 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
178 pub struct SourceFile {
179 pub(crate) syntax: SyntaxNode,
181 impl ast::AttrsOwner for SourceFile {}
182 impl ast::ModuleItemOwner for SourceFile {}
184 pub fn shebang_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![shebang]) }
186 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
188 pub(crate) syntax: SyntaxNode,
190 impl ast::AttrsOwner for Const {}
191 impl ast::NameOwner for Const {}
192 impl ast::VisibilityOwner for Const {}
194 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
195 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
196 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
197 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
198 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
199 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
200 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
201 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
203 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
205 pub(crate) syntax: SyntaxNode,
207 impl ast::AttrsOwner for Enum {}
208 impl ast::NameOwner for Enum {}
209 impl ast::VisibilityOwner for Enum {}
210 impl ast::GenericParamsOwner for Enum {}
212 pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) }
213 pub fn variant_list(&self) -> Option<VariantList> { support::child(&self.syntax) }
215 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
216 pub struct ExternBlock {
217 pub(crate) syntax: SyntaxNode,
219 impl ast::AttrsOwner for ExternBlock {}
221 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
222 pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) }
224 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
225 pub struct ExternCrate {
226 pub(crate) syntax: SyntaxNode,
228 impl ast::AttrsOwner for ExternCrate {}
229 impl ast::VisibilityOwner for ExternCrate {}
231 pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }
232 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
233 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
234 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
235 pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) }
236 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
238 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
240 pub(crate) syntax: SyntaxNode,
242 impl ast::AttrsOwner for Fn {}
243 impl ast::NameOwner for Fn {}
244 impl ast::VisibilityOwner for Fn {}
245 impl ast::GenericParamsOwner for Fn {}
247 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
248 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
249 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
250 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
251 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
252 pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }
253 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
254 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
255 pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
256 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
258 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
260 pub(crate) syntax: SyntaxNode,
262 impl ast::AttrsOwner for Impl {}
263 impl ast::VisibilityOwner for Impl {}
264 impl ast::GenericParamsOwner for Impl {}
266 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
267 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
268 pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }
269 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
270 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
271 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
272 pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) }
274 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
275 pub struct MacroRules {
276 pub(crate) syntax: SyntaxNode,
278 impl ast::AttrsOwner for MacroRules {}
279 impl ast::NameOwner for MacroRules {}
280 impl ast::VisibilityOwner for MacroRules {}
282 pub fn macro_rules_token(&self) -> Option<SyntaxToken> {
283 support::token(&self.syntax, T![macro_rules])
285 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
286 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
288 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
289 pub struct MacroDef {
290 pub(crate) syntax: SyntaxNode,
292 impl ast::AttrsOwner for MacroDef {}
293 impl ast::NameOwner for MacroDef {}
294 impl ast::VisibilityOwner for MacroDef {}
296 pub fn macro_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![macro]) }
297 pub fn args(&self) -> Option<TokenTree> { support::child(&self.syntax) }
298 pub fn body(&self) -> Option<TokenTree> { support::child(&self.syntax) }
300 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
302 pub(crate) syntax: SyntaxNode,
304 impl ast::AttrsOwner for Module {}
305 impl ast::NameOwner for Module {}
306 impl ast::VisibilityOwner for Module {}
308 pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) }
309 pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) }
310 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
312 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
314 pub(crate) syntax: SyntaxNode,
316 impl ast::AttrsOwner for Static {}
317 impl ast::NameOwner for Static {}
318 impl ast::VisibilityOwner for Static {}
320 pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
321 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
322 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
323 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
324 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
325 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
326 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
328 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
330 pub(crate) syntax: SyntaxNode,
332 impl ast::AttrsOwner for Struct {}
333 impl ast::NameOwner for Struct {}
334 impl ast::VisibilityOwner for Struct {}
335 impl ast::GenericParamsOwner for Struct {}
337 pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) }
338 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
339 pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) }
341 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
343 pub(crate) syntax: SyntaxNode,
345 impl ast::AttrsOwner for Trait {}
346 impl ast::NameOwner for Trait {}
347 impl ast::VisibilityOwner for Trait {}
348 impl ast::GenericParamsOwner for Trait {}
349 impl ast::TypeBoundsOwner for Trait {}
351 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
352 pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) }
353 pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) }
354 pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) }
356 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
357 pub struct TypeAlias {
358 pub(crate) syntax: SyntaxNode,
360 impl ast::AttrsOwner for TypeAlias {}
361 impl ast::NameOwner for TypeAlias {}
362 impl ast::VisibilityOwner for TypeAlias {}
363 impl ast::GenericParamsOwner for TypeAlias {}
364 impl ast::TypeBoundsOwner for TypeAlias {}
366 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
367 pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) }
368 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
369 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
370 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
372 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
374 pub(crate) syntax: SyntaxNode,
376 impl ast::AttrsOwner for Union {}
377 impl ast::NameOwner for Union {}
378 impl ast::VisibilityOwner for Union {}
379 impl ast::GenericParamsOwner for Union {}
381 pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) }
382 pub fn record_field_list(&self) -> Option<RecordFieldList> { support::child(&self.syntax) }
384 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
386 pub(crate) syntax: SyntaxNode,
388 impl ast::AttrsOwner for Use {}
389 impl ast::VisibilityOwner for Use {}
391 pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) }
392 pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) }
393 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
395 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
396 pub struct Visibility {
397 pub(crate) syntax: SyntaxNode,
400 pub fn pub_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pub]) }
401 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
402 pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) }
403 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
404 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
405 pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }
406 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
407 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
409 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
410 pub struct ItemList {
411 pub(crate) syntax: SyntaxNode,
413 impl ast::AttrsOwner for ItemList {}
414 impl ast::ModuleItemOwner for ItemList {}
416 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
417 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
419 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
421 pub(crate) syntax: SyntaxNode,
423 impl ast::NameOwner for Rename {}
425 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
426 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
428 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
430 pub(crate) syntax: SyntaxNode,
433 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
434 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
435 pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }
436 pub fn use_tree_list(&self) -> Option<UseTreeList> { support::child(&self.syntax) }
437 pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) }
439 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
440 pub struct UseTreeList {
441 pub(crate) syntax: SyntaxNode,
444 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
445 pub fn use_trees(&self) -> AstChildren<UseTree> { support::children(&self.syntax) }
446 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
448 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
450 pub(crate) syntax: SyntaxNode,
453 pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }
455 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
456 pub struct GenericParamList {
457 pub(crate) syntax: SyntaxNode,
459 impl GenericParamList {
460 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
461 pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) }
462 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
464 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
465 pub struct WhereClause {
466 pub(crate) syntax: SyntaxNode,
469 pub fn where_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![where]) }
470 pub fn predicates(&self) -> AstChildren<WherePred> { support::children(&self.syntax) }
472 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
473 pub struct BlockExpr {
474 pub(crate) syntax: SyntaxNode,
476 impl ast::AttrsOwner for BlockExpr {}
478 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
479 pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }
480 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
481 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
483 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
484 pub struct SelfParam {
485 pub(crate) syntax: SyntaxNode,
487 impl ast::AttrsOwner for SelfParam {}
489 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
490 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
491 support::token(&self.syntax, T![lifetime])
493 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
494 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
495 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
496 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
498 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
500 pub(crate) syntax: SyntaxNode,
502 impl ast::AttrsOwner for Param {}
504 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
505 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
506 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
507 pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) }
509 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
510 pub struct RecordFieldList {
511 pub(crate) syntax: SyntaxNode,
513 impl RecordFieldList {
514 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
515 pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) }
516 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
518 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
519 pub struct TupleFieldList {
520 pub(crate) syntax: SyntaxNode,
522 impl TupleFieldList {
523 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
524 pub fn fields(&self) -> AstChildren<TupleField> { support::children(&self.syntax) }
525 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
527 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
528 pub struct RecordField {
529 pub(crate) syntax: SyntaxNode,
531 impl ast::AttrsOwner for RecordField {}
532 impl ast::NameOwner for RecordField {}
533 impl ast::VisibilityOwner for RecordField {}
535 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
536 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
538 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
539 pub struct TupleField {
540 pub(crate) syntax: SyntaxNode,
542 impl ast::AttrsOwner for TupleField {}
543 impl ast::VisibilityOwner for TupleField {}
545 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
547 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
548 pub struct VariantList {
549 pub(crate) syntax: SyntaxNode,
552 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
553 pub fn variants(&self) -> AstChildren<Variant> { support::children(&self.syntax) }
554 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
556 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
558 pub(crate) syntax: SyntaxNode,
560 impl ast::AttrsOwner for Variant {}
561 impl ast::NameOwner for Variant {}
562 impl ast::VisibilityOwner for Variant {}
564 pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) }
565 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
566 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
568 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
569 pub struct AssocItemList {
570 pub(crate) syntax: SyntaxNode,
572 impl ast::AttrsOwner for AssocItemList {}
574 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
575 pub fn assoc_items(&self) -> AstChildren<AssocItem> { support::children(&self.syntax) }
576 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
578 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
579 pub struct ExternItemList {
580 pub(crate) syntax: SyntaxNode,
582 impl ast::AttrsOwner for ExternItemList {}
583 impl ExternItemList {
584 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
585 pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) }
586 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
588 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
589 pub struct ConstParam {
590 pub(crate) syntax: SyntaxNode,
592 impl ast::AttrsOwner for ConstParam {}
593 impl ast::NameOwner for ConstParam {}
595 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
596 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
597 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
598 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
599 pub fn default_val(&self) -> Option<Expr> { support::child(&self.syntax) }
601 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
602 pub struct LifetimeParam {
603 pub(crate) syntax: SyntaxNode,
605 impl ast::AttrsOwner for LifetimeParam {}
606 impl ast::TypeBoundsOwner for LifetimeParam {}
608 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
609 support::token(&self.syntax, T![lifetime])
612 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
613 pub struct TypeParam {
614 pub(crate) syntax: SyntaxNode,
616 impl ast::AttrsOwner for TypeParam {}
617 impl ast::NameOwner for TypeParam {}
618 impl ast::TypeBoundsOwner for TypeParam {}
620 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
621 pub fn default_type(&self) -> Option<Type> { support::child(&self.syntax) }
623 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
624 pub struct WherePred {
625 pub(crate) syntax: SyntaxNode,
627 impl ast::TypeBoundsOwner for WherePred {}
629 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
630 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }
631 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
632 support::token(&self.syntax, T![lifetime])
634 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
636 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
638 pub(crate) syntax: SyntaxNode,
640 impl ast::AttrsOwner for Literal {}
642 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
643 pub struct ExprStmt {
644 pub(crate) syntax: SyntaxNode,
646 impl ast::AttrsOwner for ExprStmt {}
648 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
649 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
651 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
653 pub(crate) syntax: SyntaxNode,
655 impl ast::AttrsOwner for LetStmt {}
657 pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }
658 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
659 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
660 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
661 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
662 pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) }
663 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
665 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
666 pub struct ArrayExpr {
667 pub(crate) syntax: SyntaxNode,
669 impl ast::AttrsOwner for ArrayExpr {}
671 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
672 pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
673 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
674 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
675 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
677 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
678 pub struct AwaitExpr {
679 pub(crate) syntax: SyntaxNode,
681 impl ast::AttrsOwner for AwaitExpr {}
683 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
684 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
685 pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) }
687 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
689 pub(crate) syntax: SyntaxNode,
691 impl ast::AttrsOwner for BinExpr {}
693 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
695 pub(crate) syntax: SyntaxNode,
697 impl ast::AttrsOwner for BoxExpr {}
699 pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }
700 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
702 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
703 pub struct BreakExpr {
704 pub(crate) syntax: SyntaxNode,
706 impl ast::AttrsOwner for BreakExpr {}
708 pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) }
709 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
710 support::token(&self.syntax, T![lifetime])
712 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
714 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
715 pub struct CallExpr {
716 pub(crate) syntax: SyntaxNode,
718 impl ast::AttrsOwner for CallExpr {}
719 impl ast::ArgListOwner for CallExpr {}
721 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
723 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
724 pub struct CastExpr {
725 pub(crate) syntax: SyntaxNode,
727 impl ast::AttrsOwner for CastExpr {}
729 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
730 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
731 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
733 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
734 pub struct ClosureExpr {
735 pub(crate) syntax: SyntaxNode,
737 impl ast::AttrsOwner for ClosureExpr {}
739 pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
740 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
741 pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) }
742 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
743 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
744 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
746 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
747 pub struct ContinueExpr {
748 pub(crate) syntax: SyntaxNode,
750 impl ast::AttrsOwner for ContinueExpr {}
752 pub fn continue_token(&self) -> Option<SyntaxToken> {
753 support::token(&self.syntax, T![continue])
755 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
756 support::token(&self.syntax, T![lifetime])
759 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
760 pub struct EffectExpr {
761 pub(crate) syntax: SyntaxNode,
763 impl ast::AttrsOwner for EffectExpr {}
765 pub fn label(&self) -> Option<Label> { support::child(&self.syntax) }
766 pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) }
767 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
768 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
769 pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
771 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
772 pub struct FieldExpr {
773 pub(crate) syntax: SyntaxNode,
775 impl ast::AttrsOwner for FieldExpr {}
777 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
778 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
779 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
781 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
783 pub(crate) syntax: SyntaxNode,
785 impl ast::AttrsOwner for ForExpr {}
786 impl ast::LoopBodyOwner for ForExpr {}
788 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
789 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
790 pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }
791 pub fn iterable(&self) -> Option<Expr> { support::child(&self.syntax) }
793 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
795 pub(crate) syntax: SyntaxNode,
797 impl ast::AttrsOwner for IfExpr {}
799 pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }
800 pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) }
801 pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) }
803 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
804 pub struct IndexExpr {
805 pub(crate) syntax: SyntaxNode,
807 impl ast::AttrsOwner for IndexExpr {}
809 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
810 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
812 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
813 pub struct LoopExpr {
814 pub(crate) syntax: SyntaxNode,
816 impl ast::AttrsOwner for LoopExpr {}
817 impl ast::LoopBodyOwner for LoopExpr {}
819 pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) }
821 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
822 pub struct MatchExpr {
823 pub(crate) syntax: SyntaxNode,
825 impl ast::AttrsOwner for MatchExpr {}
827 pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) }
828 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
829 pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) }
831 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
832 pub struct MethodCallExpr {
833 pub(crate) syntax: SyntaxNode,
835 impl ast::AttrsOwner for MethodCallExpr {}
836 impl ast::ArgListOwner for MethodCallExpr {}
837 impl MethodCallExpr {
838 pub fn receiver(&self) -> Option<Expr> { support::child(&self.syntax) }
839 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
840 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
841 pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) }
843 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
844 pub struct ParenExpr {
845 pub(crate) syntax: SyntaxNode,
847 impl ast::AttrsOwner for ParenExpr {}
849 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
850 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
851 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
853 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
854 pub struct PathExpr {
855 pub(crate) syntax: SyntaxNode,
857 impl ast::AttrsOwner for PathExpr {}
859 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
861 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
862 pub struct PrefixExpr {
863 pub(crate) syntax: SyntaxNode,
865 impl ast::AttrsOwner for PrefixExpr {}
867 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
869 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
870 pub struct RangeExpr {
871 pub(crate) syntax: SyntaxNode,
873 impl ast::AttrsOwner for RangeExpr {}
875 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
876 pub struct RecordExpr {
877 pub(crate) syntax: SyntaxNode,
880 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
881 pub fn record_expr_field_list(&self) -> Option<RecordExprFieldList> {
882 support::child(&self.syntax)
885 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
887 pub(crate) syntax: SyntaxNode,
889 impl ast::AttrsOwner for RefExpr {}
891 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
892 pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) }
893 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
894 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
895 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
897 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
898 pub struct ReturnExpr {
899 pub(crate) syntax: SyntaxNode,
901 impl ast::AttrsOwner for ReturnExpr {}
903 pub fn return_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![return]) }
904 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
906 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
908 pub(crate) syntax: SyntaxNode,
910 impl ast::AttrsOwner for TryExpr {}
912 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
913 pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }
915 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
916 pub struct TupleExpr {
917 pub(crate) syntax: SyntaxNode,
919 impl ast::AttrsOwner for TupleExpr {}
921 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
922 pub fn fields(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
923 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
925 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
926 pub struct WhileExpr {
927 pub(crate) syntax: SyntaxNode,
929 impl ast::AttrsOwner for WhileExpr {}
930 impl ast::LoopBodyOwner for WhileExpr {}
932 pub fn while_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![while]) }
933 pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) }
935 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
937 pub(crate) syntax: SyntaxNode,
940 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
941 support::token(&self.syntax, T![lifetime])
944 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
945 pub struct RecordExprFieldList {
946 pub(crate) syntax: SyntaxNode,
948 impl ast::AttrsOwner for RecordExprFieldList {}
949 impl RecordExprFieldList {
950 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
951 pub fn fields(&self) -> AstChildren<RecordExprField> { support::children(&self.syntax) }
952 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
953 pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) }
954 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
956 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
957 pub struct RecordExprField {
958 pub(crate) syntax: SyntaxNode,
960 impl ast::AttrsOwner for RecordExprField {}
961 impl RecordExprField {
962 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
963 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
964 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
966 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
968 pub(crate) syntax: SyntaxNode,
971 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
972 pub fn args(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
973 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
975 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
976 pub struct Condition {
977 pub(crate) syntax: SyntaxNode,
980 pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }
981 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
982 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
983 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
985 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
986 pub struct MatchArmList {
987 pub(crate) syntax: SyntaxNode,
989 impl ast::AttrsOwner for MatchArmList {}
991 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
992 pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) }
993 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
995 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
996 pub struct MatchArm {
997 pub(crate) syntax: SyntaxNode,
999 impl ast::AttrsOwner for MatchArm {}
1001 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1002 pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) }
1003 pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) }
1004 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
1005 pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }
1007 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1008 pub struct MatchGuard {
1009 pub(crate) syntax: SyntaxNode,
1012 pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }
1013 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
1015 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1016 pub struct ArrayType {
1017 pub(crate) syntax: SyntaxNode,
1020 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
1021 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1022 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
1023 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
1024 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
1026 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1027 pub struct DynTraitType {
1028 pub(crate) syntax: SyntaxNode,
1031 pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) }
1032 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) }
1034 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1035 pub struct FnPtrType {
1036 pub(crate) syntax: SyntaxNode,
1039 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
1040 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
1041 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
1042 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
1043 pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }
1044 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
1045 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
1047 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1048 pub struct ForType {
1049 pub(crate) syntax: SyntaxNode,
1052 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
1053 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }
1054 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1056 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1057 pub struct ImplTraitType {
1058 pub(crate) syntax: SyntaxNode,
1060 impl ImplTraitType {
1061 pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }
1062 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) }
1064 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1065 pub struct InferType {
1066 pub(crate) syntax: SyntaxNode,
1069 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
1071 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1072 pub struct NeverType {
1073 pub(crate) syntax: SyntaxNode,
1076 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
1078 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1079 pub struct ParenType {
1080 pub(crate) syntax: SyntaxNode,
1083 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1084 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1085 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1087 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1088 pub struct PtrType {
1089 pub(crate) syntax: SyntaxNode,
1092 pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }
1093 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
1094 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1095 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1097 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1098 pub struct RefType {
1099 pub(crate) syntax: SyntaxNode,
1102 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
1103 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
1104 support::token(&self.syntax, T![lifetime])
1106 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1107 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1109 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1110 pub struct SliceType {
1111 pub(crate) syntax: SyntaxNode,
1114 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
1115 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1116 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
1118 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1119 pub struct TupleType {
1120 pub(crate) syntax: SyntaxNode,
1123 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1124 pub fn fields(&self) -> AstChildren<Type> { support::children(&self.syntax) }
1125 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1127 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1128 pub struct TypeBound {
1129 pub(crate) syntax: SyntaxNode,
1132 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
1133 support::token(&self.syntax, T![lifetime])
1135 pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }
1136 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1138 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1139 pub struct IdentPat {
1140 pub(crate) syntax: SyntaxNode,
1142 impl ast::AttrsOwner for IdentPat {}
1143 impl ast::NameOwner for IdentPat {}
1145 pub fn ref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ref]) }
1146 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1147 pub fn at_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![@]) }
1148 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1150 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1152 pub(crate) syntax: SyntaxNode,
1155 pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }
1156 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1158 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1159 pub struct RestPat {
1160 pub(crate) syntax: SyntaxNode,
1163 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
1165 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1166 pub struct LiteralPat {
1167 pub(crate) syntax: SyntaxNode,
1170 pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }
1172 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1173 pub struct MacroPat {
1174 pub(crate) syntax: SyntaxNode,
1177 pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) }
1179 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1181 pub(crate) syntax: SyntaxNode,
1184 pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1186 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1187 pub struct ParenPat {
1188 pub(crate) syntax: SyntaxNode,
1191 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1192 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1193 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1195 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1196 pub struct PathPat {
1197 pub(crate) syntax: SyntaxNode,
1200 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
1202 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1203 pub struct WildcardPat {
1204 pub(crate) syntax: SyntaxNode,
1207 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
1209 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1210 pub struct RangePat {
1211 pub(crate) syntax: SyntaxNode,
1214 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1215 pub struct RecordPat {
1216 pub(crate) syntax: SyntaxNode,
1219 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
1220 pub fn record_pat_field_list(&self) -> Option<RecordPatFieldList> {
1221 support::child(&self.syntax)
1224 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1226 pub(crate) syntax: SyntaxNode,
1229 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
1230 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1231 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1233 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1234 pub struct SlicePat {
1235 pub(crate) syntax: SyntaxNode,
1238 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
1239 pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1240 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
1242 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1243 pub struct TuplePat {
1244 pub(crate) syntax: SyntaxNode,
1247 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1248 pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1249 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1251 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1252 pub struct TupleStructPat {
1253 pub(crate) syntax: SyntaxNode,
1255 impl TupleStructPat {
1256 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
1257 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1258 pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1259 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1261 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1262 pub struct RecordPatFieldList {
1263 pub(crate) syntax: SyntaxNode,
1265 impl RecordPatFieldList {
1266 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
1267 pub fn fields(&self) -> AstChildren<RecordPatField> { support::children(&self.syntax) }
1268 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
1269 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
1271 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1272 pub struct RecordPatField {
1273 pub(crate) syntax: SyntaxNode,
1275 impl ast::AttrsOwner for RecordPatField {}
1276 impl RecordPatField {
1277 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
1278 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
1279 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1281 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1282 pub enum GenericArg {
1284 AssocTypeArg(AssocTypeArg),
1285 LifetimeArg(LifetimeArg),
1288 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1290 ArrayType(ArrayType),
1291 DynTraitType(DynTraitType),
1292 FnPtrType(FnPtrType),
1294 ImplTraitType(ImplTraitType),
1295 InferType(InferType),
1296 NeverType(NeverType),
1297 ParenType(ParenType),
1301 SliceType(SliceType),
1302 TupleType(TupleType),
1304 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1306 ArrayExpr(ArrayExpr),
1307 AwaitExpr(AwaitExpr),
1309 BlockExpr(BlockExpr),
1311 BreakExpr(BreakExpr),
1314 ClosureExpr(ClosureExpr),
1315 ContinueExpr(ContinueExpr),
1316 EffectExpr(EffectExpr),
1317 FieldExpr(FieldExpr),
1320 IndexExpr(IndexExpr),
1323 MacroCall(MacroCall),
1324 MatchExpr(MatchExpr),
1325 MethodCallExpr(MethodCallExpr),
1326 ParenExpr(ParenExpr),
1328 PrefixExpr(PrefixExpr),
1329 RangeExpr(RangeExpr),
1330 RecordExpr(RecordExpr),
1332 ReturnExpr(ReturnExpr),
1334 TupleExpr(TupleExpr),
1335 WhileExpr(WhileExpr),
1337 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1341 ExternBlock(ExternBlock),
1342 ExternCrate(ExternCrate),
1345 MacroCall(MacroCall),
1346 MacroRules(MacroRules),
1352 TypeAlias(TypeAlias),
1356 impl ast::AttrsOwner for Item {}
1357 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1363 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1368 LiteralPat(LiteralPat),
1373 WildcardPat(WildcardPat),
1375 RecordPat(RecordPat),
1379 TupleStructPat(TupleStructPat),
1381 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1382 pub enum FieldList {
1383 RecordFieldList(RecordFieldList),
1384 TupleFieldList(TupleFieldList),
1386 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1392 impl ast::AttrsOwner for AdtDef {}
1393 impl ast::GenericParamsOwner for AdtDef {}
1394 impl ast::NameOwner for AdtDef {}
1395 impl ast::VisibilityOwner for AdtDef {}
1396 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1397 pub enum AssocItem {
1400 MacroCall(MacroCall),
1401 TypeAlias(TypeAlias),
1403 impl ast::AttrsOwner for AssocItem {}
1404 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1405 pub enum ExternItem {
1407 MacroCall(MacroCall),
1409 TypeAlias(TypeAlias),
1411 impl ast::AttrsOwner for ExternItem {}
1412 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1413 pub enum GenericParam {
1414 ConstParam(ConstParam),
1415 LifetimeParam(LifetimeParam),
1416 TypeParam(TypeParam),
1418 impl ast::AttrsOwner for GenericParam {}
1419 impl AstNode for Name {
1420 fn can_cast(kind: SyntaxKind) -> bool { kind == NAME }
1421 fn cast(syntax: SyntaxNode) -> Option<Self> {
1422 if Self::can_cast(syntax.kind()) {
1423 Some(Self { syntax })
1428 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1430 impl AstNode for NameRef {
1431 fn can_cast(kind: SyntaxKind) -> bool { kind == NAME_REF }
1432 fn cast(syntax: SyntaxNode) -> Option<Self> {
1433 if Self::can_cast(syntax.kind()) {
1434 Some(Self { syntax })
1439 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1441 impl AstNode for Path {
1442 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH }
1443 fn cast(syntax: SyntaxNode) -> Option<Self> {
1444 if Self::can_cast(syntax.kind()) {
1445 Some(Self { syntax })
1450 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1452 impl AstNode for PathSegment {
1453 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT }
1454 fn cast(syntax: SyntaxNode) -> Option<Self> {
1455 if Self::can_cast(syntax.kind()) {
1456 Some(Self { syntax })
1461 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1463 impl AstNode for GenericArgList {
1464 fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_ARG_LIST }
1465 fn cast(syntax: SyntaxNode) -> Option<Self> {
1466 if Self::can_cast(syntax.kind()) {
1467 Some(Self { syntax })
1472 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1474 impl AstNode for ParamList {
1475 fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST }
1476 fn cast(syntax: SyntaxNode) -> Option<Self> {
1477 if Self::can_cast(syntax.kind()) {
1478 Some(Self { syntax })
1483 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1485 impl AstNode for RetType {
1486 fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE }
1487 fn cast(syntax: SyntaxNode) -> Option<Self> {
1488 if Self::can_cast(syntax.kind()) {
1489 Some(Self { syntax })
1494 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1496 impl AstNode for PathType {
1497 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_TYPE }
1498 fn cast(syntax: SyntaxNode) -> Option<Self> {
1499 if Self::can_cast(syntax.kind()) {
1500 Some(Self { syntax })
1505 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1507 impl AstNode for TypeArg {
1508 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ARG }
1509 fn cast(syntax: SyntaxNode) -> Option<Self> {
1510 if Self::can_cast(syntax.kind()) {
1511 Some(Self { syntax })
1516 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1518 impl AstNode for AssocTypeArg {
1519 fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_TYPE_ARG }
1520 fn cast(syntax: SyntaxNode) -> Option<Self> {
1521 if Self::can_cast(syntax.kind()) {
1522 Some(Self { syntax })
1527 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1529 impl AstNode for LifetimeArg {
1530 fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_ARG }
1531 fn cast(syntax: SyntaxNode) -> Option<Self> {
1532 if Self::can_cast(syntax.kind()) {
1533 Some(Self { syntax })
1538 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1540 impl AstNode for ConstArg {
1541 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_ARG }
1542 fn cast(syntax: SyntaxNode) -> Option<Self> {
1543 if Self::can_cast(syntax.kind()) {
1544 Some(Self { syntax })
1549 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1551 impl AstNode for TypeBoundList {
1552 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST }
1553 fn cast(syntax: SyntaxNode) -> Option<Self> {
1554 if Self::can_cast(syntax.kind()) {
1555 Some(Self { syntax })
1560 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1562 impl AstNode for MacroCall {
1563 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL }
1564 fn cast(syntax: SyntaxNode) -> Option<Self> {
1565 if Self::can_cast(syntax.kind()) {
1566 Some(Self { syntax })
1571 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1573 impl AstNode for Attr {
1574 fn can_cast(kind: SyntaxKind) -> bool { kind == ATTR }
1575 fn cast(syntax: SyntaxNode) -> Option<Self> {
1576 if Self::can_cast(syntax.kind()) {
1577 Some(Self { syntax })
1582 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1584 impl AstNode for TokenTree {
1585 fn can_cast(kind: SyntaxKind) -> bool { kind == TOKEN_TREE }
1586 fn cast(syntax: SyntaxNode) -> Option<Self> {
1587 if Self::can_cast(syntax.kind()) {
1588 Some(Self { syntax })
1593 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1595 impl AstNode for MacroItems {
1596 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_ITEMS }
1597 fn cast(syntax: SyntaxNode) -> Option<Self> {
1598 if Self::can_cast(syntax.kind()) {
1599 Some(Self { syntax })
1604 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1606 impl AstNode for MacroStmts {
1607 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_STMTS }
1608 fn cast(syntax: SyntaxNode) -> Option<Self> {
1609 if Self::can_cast(syntax.kind()) {
1610 Some(Self { syntax })
1615 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1617 impl AstNode for SourceFile {
1618 fn can_cast(kind: SyntaxKind) -> bool { kind == SOURCE_FILE }
1619 fn cast(syntax: SyntaxNode) -> Option<Self> {
1620 if Self::can_cast(syntax.kind()) {
1621 Some(Self { syntax })
1626 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1628 impl AstNode for Const {
1629 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST }
1630 fn cast(syntax: SyntaxNode) -> Option<Self> {
1631 if Self::can_cast(syntax.kind()) {
1632 Some(Self { syntax })
1637 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1639 impl AstNode for Enum {
1640 fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM }
1641 fn cast(syntax: SyntaxNode) -> Option<Self> {
1642 if Self::can_cast(syntax.kind()) {
1643 Some(Self { syntax })
1648 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1650 impl AstNode for ExternBlock {
1651 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK }
1652 fn cast(syntax: SyntaxNode) -> Option<Self> {
1653 if Self::can_cast(syntax.kind()) {
1654 Some(Self { syntax })
1659 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1661 impl AstNode for ExternCrate {
1662 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE }
1663 fn cast(syntax: SyntaxNode) -> Option<Self> {
1664 if Self::can_cast(syntax.kind()) {
1665 Some(Self { syntax })
1670 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1672 impl AstNode for Fn {
1673 fn can_cast(kind: SyntaxKind) -> bool { kind == FN }
1674 fn cast(syntax: SyntaxNode) -> Option<Self> {
1675 if Self::can_cast(syntax.kind()) {
1676 Some(Self { syntax })
1681 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1683 impl AstNode for Impl {
1684 fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL }
1685 fn cast(syntax: SyntaxNode) -> Option<Self> {
1686 if Self::can_cast(syntax.kind()) {
1687 Some(Self { syntax })
1692 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1694 impl AstNode for MacroRules {
1695 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_RULES }
1696 fn cast(syntax: SyntaxNode) -> Option<Self> {
1697 if Self::can_cast(syntax.kind()) {
1698 Some(Self { syntax })
1703 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1705 impl AstNode for MacroDef {
1706 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_DEF }
1707 fn cast(syntax: SyntaxNode) -> Option<Self> {
1708 if Self::can_cast(syntax.kind()) {
1709 Some(Self { syntax })
1714 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1716 impl AstNode for Module {
1717 fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE }
1718 fn cast(syntax: SyntaxNode) -> Option<Self> {
1719 if Self::can_cast(syntax.kind()) {
1720 Some(Self { syntax })
1725 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1727 impl AstNode for Static {
1728 fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC }
1729 fn cast(syntax: SyntaxNode) -> Option<Self> {
1730 if Self::can_cast(syntax.kind()) {
1731 Some(Self { syntax })
1736 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1738 impl AstNode for Struct {
1739 fn can_cast(kind: SyntaxKind) -> bool { kind == STRUCT }
1740 fn cast(syntax: SyntaxNode) -> Option<Self> {
1741 if Self::can_cast(syntax.kind()) {
1742 Some(Self { syntax })
1747 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1749 impl AstNode for Trait {
1750 fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT }
1751 fn cast(syntax: SyntaxNode) -> Option<Self> {
1752 if Self::can_cast(syntax.kind()) {
1753 Some(Self { syntax })
1758 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1760 impl AstNode for TypeAlias {
1761 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS }
1762 fn cast(syntax: SyntaxNode) -> Option<Self> {
1763 if Self::can_cast(syntax.kind()) {
1764 Some(Self { syntax })
1769 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1771 impl AstNode for Union {
1772 fn can_cast(kind: SyntaxKind) -> bool { kind == UNION }
1773 fn cast(syntax: SyntaxNode) -> Option<Self> {
1774 if Self::can_cast(syntax.kind()) {
1775 Some(Self { syntax })
1780 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1782 impl AstNode for Use {
1783 fn can_cast(kind: SyntaxKind) -> bool { kind == USE }
1784 fn cast(syntax: SyntaxNode) -> Option<Self> {
1785 if Self::can_cast(syntax.kind()) {
1786 Some(Self { syntax })
1791 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1793 impl AstNode for Visibility {
1794 fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY }
1795 fn cast(syntax: SyntaxNode) -> Option<Self> {
1796 if Self::can_cast(syntax.kind()) {
1797 Some(Self { syntax })
1802 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1804 impl AstNode for ItemList {
1805 fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST }
1806 fn cast(syntax: SyntaxNode) -> Option<Self> {
1807 if Self::can_cast(syntax.kind()) {
1808 Some(Self { syntax })
1813 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1815 impl AstNode for Rename {
1816 fn can_cast(kind: SyntaxKind) -> bool { kind == RENAME }
1817 fn cast(syntax: SyntaxNode) -> Option<Self> {
1818 if Self::can_cast(syntax.kind()) {
1819 Some(Self { syntax })
1824 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1826 impl AstNode for UseTree {
1827 fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE }
1828 fn cast(syntax: SyntaxNode) -> Option<Self> {
1829 if Self::can_cast(syntax.kind()) {
1830 Some(Self { syntax })
1835 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1837 impl AstNode for UseTreeList {
1838 fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE_LIST }
1839 fn cast(syntax: SyntaxNode) -> Option<Self> {
1840 if Self::can_cast(syntax.kind()) {
1841 Some(Self { syntax })
1846 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1848 impl AstNode for Abi {
1849 fn can_cast(kind: SyntaxKind) -> bool { kind == ABI }
1850 fn cast(syntax: SyntaxNode) -> Option<Self> {
1851 if Self::can_cast(syntax.kind()) {
1852 Some(Self { syntax })
1857 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1859 impl AstNode for GenericParamList {
1860 fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_PARAM_LIST }
1861 fn cast(syntax: SyntaxNode) -> Option<Self> {
1862 if Self::can_cast(syntax.kind()) {
1863 Some(Self { syntax })
1868 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1870 impl AstNode for WhereClause {
1871 fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE }
1872 fn cast(syntax: SyntaxNode) -> Option<Self> {
1873 if Self::can_cast(syntax.kind()) {
1874 Some(Self { syntax })
1879 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1881 impl AstNode for BlockExpr {
1882 fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR }
1883 fn cast(syntax: SyntaxNode) -> Option<Self> {
1884 if Self::can_cast(syntax.kind()) {
1885 Some(Self { syntax })
1890 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1892 impl AstNode for SelfParam {
1893 fn can_cast(kind: SyntaxKind) -> bool { kind == SELF_PARAM }
1894 fn cast(syntax: SyntaxNode) -> Option<Self> {
1895 if Self::can_cast(syntax.kind()) {
1896 Some(Self { syntax })
1901 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1903 impl AstNode for Param {
1904 fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM }
1905 fn cast(syntax: SyntaxNode) -> Option<Self> {
1906 if Self::can_cast(syntax.kind()) {
1907 Some(Self { syntax })
1912 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1914 impl AstNode for RecordFieldList {
1915 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_LIST }
1916 fn cast(syntax: SyntaxNode) -> Option<Self> {
1917 if Self::can_cast(syntax.kind()) {
1918 Some(Self { syntax })
1923 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1925 impl AstNode for TupleFieldList {
1926 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_LIST }
1927 fn cast(syntax: SyntaxNode) -> Option<Self> {
1928 if Self::can_cast(syntax.kind()) {
1929 Some(Self { syntax })
1934 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1936 impl AstNode for RecordField {
1937 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD }
1938 fn cast(syntax: SyntaxNode) -> Option<Self> {
1939 if Self::can_cast(syntax.kind()) {
1940 Some(Self { syntax })
1945 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1947 impl AstNode for TupleField {
1948 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD }
1949 fn cast(syntax: SyntaxNode) -> Option<Self> {
1950 if Self::can_cast(syntax.kind()) {
1951 Some(Self { syntax })
1956 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1958 impl AstNode for VariantList {
1959 fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT_LIST }
1960 fn cast(syntax: SyntaxNode) -> Option<Self> {
1961 if Self::can_cast(syntax.kind()) {
1962 Some(Self { syntax })
1967 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1969 impl AstNode for Variant {
1970 fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT }
1971 fn cast(syntax: SyntaxNode) -> Option<Self> {
1972 if Self::can_cast(syntax.kind()) {
1973 Some(Self { syntax })
1978 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1980 impl AstNode for AssocItemList {
1981 fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_ITEM_LIST }
1982 fn cast(syntax: SyntaxNode) -> Option<Self> {
1983 if Self::can_cast(syntax.kind()) {
1984 Some(Self { syntax })
1989 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1991 impl AstNode for ExternItemList {
1992 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST }
1993 fn cast(syntax: SyntaxNode) -> Option<Self> {
1994 if Self::can_cast(syntax.kind()) {
1995 Some(Self { syntax })
2000 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2002 impl AstNode for ConstParam {
2003 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_PARAM }
2004 fn cast(syntax: SyntaxNode) -> Option<Self> {
2005 if Self::can_cast(syntax.kind()) {
2006 Some(Self { syntax })
2011 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2013 impl AstNode for LifetimeParam {
2014 fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_PARAM }
2015 fn cast(syntax: SyntaxNode) -> Option<Self> {
2016 if Self::can_cast(syntax.kind()) {
2017 Some(Self { syntax })
2022 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2024 impl AstNode for TypeParam {
2025 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM }
2026 fn cast(syntax: SyntaxNode) -> Option<Self> {
2027 if Self::can_cast(syntax.kind()) {
2028 Some(Self { syntax })
2033 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2035 impl AstNode for WherePred {
2036 fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_PRED }
2037 fn cast(syntax: SyntaxNode) -> Option<Self> {
2038 if Self::can_cast(syntax.kind()) {
2039 Some(Self { syntax })
2044 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2046 impl AstNode for Literal {
2047 fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL }
2048 fn cast(syntax: SyntaxNode) -> Option<Self> {
2049 if Self::can_cast(syntax.kind()) {
2050 Some(Self { syntax })
2055 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2057 impl AstNode for ExprStmt {
2058 fn can_cast(kind: SyntaxKind) -> bool { kind == EXPR_STMT }
2059 fn cast(syntax: SyntaxNode) -> Option<Self> {
2060 if Self::can_cast(syntax.kind()) {
2061 Some(Self { syntax })
2066 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2068 impl AstNode for LetStmt {
2069 fn can_cast(kind: SyntaxKind) -> bool { kind == LET_STMT }
2070 fn cast(syntax: SyntaxNode) -> Option<Self> {
2071 if Self::can_cast(syntax.kind()) {
2072 Some(Self { syntax })
2077 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2079 impl AstNode for ArrayExpr {
2080 fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_EXPR }
2081 fn cast(syntax: SyntaxNode) -> Option<Self> {
2082 if Self::can_cast(syntax.kind()) {
2083 Some(Self { syntax })
2088 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2090 impl AstNode for AwaitExpr {
2091 fn can_cast(kind: SyntaxKind) -> bool { kind == AWAIT_EXPR }
2092 fn cast(syntax: SyntaxNode) -> Option<Self> {
2093 if Self::can_cast(syntax.kind()) {
2094 Some(Self { syntax })
2099 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2101 impl AstNode for BinExpr {
2102 fn can_cast(kind: SyntaxKind) -> bool { kind == BIN_EXPR }
2103 fn cast(syntax: SyntaxNode) -> Option<Self> {
2104 if Self::can_cast(syntax.kind()) {
2105 Some(Self { syntax })
2110 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2112 impl AstNode for BoxExpr {
2113 fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_EXPR }
2114 fn cast(syntax: SyntaxNode) -> Option<Self> {
2115 if Self::can_cast(syntax.kind()) {
2116 Some(Self { syntax })
2121 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2123 impl AstNode for BreakExpr {
2124 fn can_cast(kind: SyntaxKind) -> bool { kind == BREAK_EXPR }
2125 fn cast(syntax: SyntaxNode) -> Option<Self> {
2126 if Self::can_cast(syntax.kind()) {
2127 Some(Self { syntax })
2132 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2134 impl AstNode for CallExpr {
2135 fn can_cast(kind: SyntaxKind) -> bool { kind == CALL_EXPR }
2136 fn cast(syntax: SyntaxNode) -> Option<Self> {
2137 if Self::can_cast(syntax.kind()) {
2138 Some(Self { syntax })
2143 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2145 impl AstNode for CastExpr {
2146 fn can_cast(kind: SyntaxKind) -> bool { kind == CAST_EXPR }
2147 fn cast(syntax: SyntaxNode) -> Option<Self> {
2148 if Self::can_cast(syntax.kind()) {
2149 Some(Self { syntax })
2154 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2156 impl AstNode for ClosureExpr {
2157 fn can_cast(kind: SyntaxKind) -> bool { kind == CLOSURE_EXPR }
2158 fn cast(syntax: SyntaxNode) -> Option<Self> {
2159 if Self::can_cast(syntax.kind()) {
2160 Some(Self { syntax })
2165 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2167 impl AstNode for ContinueExpr {
2168 fn can_cast(kind: SyntaxKind) -> bool { kind == CONTINUE_EXPR }
2169 fn cast(syntax: SyntaxNode) -> Option<Self> {
2170 if Self::can_cast(syntax.kind()) {
2171 Some(Self { syntax })
2176 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2178 impl AstNode for EffectExpr {
2179 fn can_cast(kind: SyntaxKind) -> bool { kind == EFFECT_EXPR }
2180 fn cast(syntax: SyntaxNode) -> Option<Self> {
2181 if Self::can_cast(syntax.kind()) {
2182 Some(Self { syntax })
2187 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2189 impl AstNode for FieldExpr {
2190 fn can_cast(kind: SyntaxKind) -> bool { kind == FIELD_EXPR }
2191 fn cast(syntax: SyntaxNode) -> Option<Self> {
2192 if Self::can_cast(syntax.kind()) {
2193 Some(Self { syntax })
2198 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2200 impl AstNode for ForExpr {
2201 fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_EXPR }
2202 fn cast(syntax: SyntaxNode) -> Option<Self> {
2203 if Self::can_cast(syntax.kind()) {
2204 Some(Self { syntax })
2209 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2211 impl AstNode for IfExpr {
2212 fn can_cast(kind: SyntaxKind) -> bool { kind == IF_EXPR }
2213 fn cast(syntax: SyntaxNode) -> Option<Self> {
2214 if Self::can_cast(syntax.kind()) {
2215 Some(Self { syntax })
2220 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2222 impl AstNode for IndexExpr {
2223 fn can_cast(kind: SyntaxKind) -> bool { kind == INDEX_EXPR }
2224 fn cast(syntax: SyntaxNode) -> Option<Self> {
2225 if Self::can_cast(syntax.kind()) {
2226 Some(Self { syntax })
2231 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2233 impl AstNode for LoopExpr {
2234 fn can_cast(kind: SyntaxKind) -> bool { kind == LOOP_EXPR }
2235 fn cast(syntax: SyntaxNode) -> Option<Self> {
2236 if Self::can_cast(syntax.kind()) {
2237 Some(Self { syntax })
2242 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2244 impl AstNode for MatchExpr {
2245 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_EXPR }
2246 fn cast(syntax: SyntaxNode) -> Option<Self> {
2247 if Self::can_cast(syntax.kind()) {
2248 Some(Self { syntax })
2253 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2255 impl AstNode for MethodCallExpr {
2256 fn can_cast(kind: SyntaxKind) -> bool { kind == METHOD_CALL_EXPR }
2257 fn cast(syntax: SyntaxNode) -> Option<Self> {
2258 if Self::can_cast(syntax.kind()) {
2259 Some(Self { syntax })
2264 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2266 impl AstNode for ParenExpr {
2267 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_EXPR }
2268 fn cast(syntax: SyntaxNode) -> Option<Self> {
2269 if Self::can_cast(syntax.kind()) {
2270 Some(Self { syntax })
2275 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2277 impl AstNode for PathExpr {
2278 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_EXPR }
2279 fn cast(syntax: SyntaxNode) -> Option<Self> {
2280 if Self::can_cast(syntax.kind()) {
2281 Some(Self { syntax })
2286 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2288 impl AstNode for PrefixExpr {
2289 fn can_cast(kind: SyntaxKind) -> bool { kind == PREFIX_EXPR }
2290 fn cast(syntax: SyntaxNode) -> Option<Self> {
2291 if Self::can_cast(syntax.kind()) {
2292 Some(Self { syntax })
2297 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2299 impl AstNode for RangeExpr {
2300 fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_EXPR }
2301 fn cast(syntax: SyntaxNode) -> Option<Self> {
2302 if Self::can_cast(syntax.kind()) {
2303 Some(Self { syntax })
2308 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2310 impl AstNode for RecordExpr {
2311 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR }
2312 fn cast(syntax: SyntaxNode) -> Option<Self> {
2313 if Self::can_cast(syntax.kind()) {
2314 Some(Self { syntax })
2319 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2321 impl AstNode for RefExpr {
2322 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_EXPR }
2323 fn cast(syntax: SyntaxNode) -> Option<Self> {
2324 if Self::can_cast(syntax.kind()) {
2325 Some(Self { syntax })
2330 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2332 impl AstNode for ReturnExpr {
2333 fn can_cast(kind: SyntaxKind) -> bool { kind == RETURN_EXPR }
2334 fn cast(syntax: SyntaxNode) -> Option<Self> {
2335 if Self::can_cast(syntax.kind()) {
2336 Some(Self { syntax })
2341 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2343 impl AstNode for TryExpr {
2344 fn can_cast(kind: SyntaxKind) -> bool { kind == TRY_EXPR }
2345 fn cast(syntax: SyntaxNode) -> Option<Self> {
2346 if Self::can_cast(syntax.kind()) {
2347 Some(Self { syntax })
2352 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2354 impl AstNode for TupleExpr {
2355 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_EXPR }
2356 fn cast(syntax: SyntaxNode) -> Option<Self> {
2357 if Self::can_cast(syntax.kind()) {
2358 Some(Self { syntax })
2363 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2365 impl AstNode for WhileExpr {
2366 fn can_cast(kind: SyntaxKind) -> bool { kind == WHILE_EXPR }
2367 fn cast(syntax: SyntaxNode) -> Option<Self> {
2368 if Self::can_cast(syntax.kind()) {
2369 Some(Self { syntax })
2374 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2376 impl AstNode for Label {
2377 fn can_cast(kind: SyntaxKind) -> bool { kind == LABEL }
2378 fn cast(syntax: SyntaxNode) -> Option<Self> {
2379 if Self::can_cast(syntax.kind()) {
2380 Some(Self { syntax })
2385 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2387 impl AstNode for RecordExprFieldList {
2388 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD_LIST }
2389 fn cast(syntax: SyntaxNode) -> Option<Self> {
2390 if Self::can_cast(syntax.kind()) {
2391 Some(Self { syntax })
2396 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2398 impl AstNode for RecordExprField {
2399 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD }
2400 fn cast(syntax: SyntaxNode) -> Option<Self> {
2401 if Self::can_cast(syntax.kind()) {
2402 Some(Self { syntax })
2407 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2409 impl AstNode for ArgList {
2410 fn can_cast(kind: SyntaxKind) -> bool { kind == ARG_LIST }
2411 fn cast(syntax: SyntaxNode) -> Option<Self> {
2412 if Self::can_cast(syntax.kind()) {
2413 Some(Self { syntax })
2418 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2420 impl AstNode for Condition {
2421 fn can_cast(kind: SyntaxKind) -> bool { kind == CONDITION }
2422 fn cast(syntax: SyntaxNode) -> Option<Self> {
2423 if Self::can_cast(syntax.kind()) {
2424 Some(Self { syntax })
2429 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2431 impl AstNode for MatchArmList {
2432 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM_LIST }
2433 fn cast(syntax: SyntaxNode) -> Option<Self> {
2434 if Self::can_cast(syntax.kind()) {
2435 Some(Self { syntax })
2440 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2442 impl AstNode for MatchArm {
2443 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM }
2444 fn cast(syntax: SyntaxNode) -> Option<Self> {
2445 if Self::can_cast(syntax.kind()) {
2446 Some(Self { syntax })
2451 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2453 impl AstNode for MatchGuard {
2454 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_GUARD }
2455 fn cast(syntax: SyntaxNode) -> Option<Self> {
2456 if Self::can_cast(syntax.kind()) {
2457 Some(Self { syntax })
2462 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2464 impl AstNode for ArrayType {
2465 fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_TYPE }
2466 fn cast(syntax: SyntaxNode) -> Option<Self> {
2467 if Self::can_cast(syntax.kind()) {
2468 Some(Self { syntax })
2473 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2475 impl AstNode for DynTraitType {
2476 fn can_cast(kind: SyntaxKind) -> bool { kind == DYN_TRAIT_TYPE }
2477 fn cast(syntax: SyntaxNode) -> Option<Self> {
2478 if Self::can_cast(syntax.kind()) {
2479 Some(Self { syntax })
2484 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2486 impl AstNode for FnPtrType {
2487 fn can_cast(kind: SyntaxKind) -> bool { kind == FN_PTR_TYPE }
2488 fn cast(syntax: SyntaxNode) -> Option<Self> {
2489 if Self::can_cast(syntax.kind()) {
2490 Some(Self { syntax })
2495 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2497 impl AstNode for ForType {
2498 fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_TYPE }
2499 fn cast(syntax: SyntaxNode) -> Option<Self> {
2500 if Self::can_cast(syntax.kind()) {
2501 Some(Self { syntax })
2506 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2508 impl AstNode for ImplTraitType {
2509 fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_TRAIT_TYPE }
2510 fn cast(syntax: SyntaxNode) -> Option<Self> {
2511 if Self::can_cast(syntax.kind()) {
2512 Some(Self { syntax })
2517 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2519 impl AstNode for InferType {
2520 fn can_cast(kind: SyntaxKind) -> bool { kind == INFER_TYPE }
2521 fn cast(syntax: SyntaxNode) -> Option<Self> {
2522 if Self::can_cast(syntax.kind()) {
2523 Some(Self { syntax })
2528 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2530 impl AstNode for NeverType {
2531 fn can_cast(kind: SyntaxKind) -> bool { kind == NEVER_TYPE }
2532 fn cast(syntax: SyntaxNode) -> Option<Self> {
2533 if Self::can_cast(syntax.kind()) {
2534 Some(Self { syntax })
2539 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2541 impl AstNode for ParenType {
2542 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_TYPE }
2543 fn cast(syntax: SyntaxNode) -> Option<Self> {
2544 if Self::can_cast(syntax.kind()) {
2545 Some(Self { syntax })
2550 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2552 impl AstNode for PtrType {
2553 fn can_cast(kind: SyntaxKind) -> bool { kind == PTR_TYPE }
2554 fn cast(syntax: SyntaxNode) -> Option<Self> {
2555 if Self::can_cast(syntax.kind()) {
2556 Some(Self { syntax })
2561 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2563 impl AstNode for RefType {
2564 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_TYPE }
2565 fn cast(syntax: SyntaxNode) -> Option<Self> {
2566 if Self::can_cast(syntax.kind()) {
2567 Some(Self { syntax })
2572 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2574 impl AstNode for SliceType {
2575 fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_TYPE }
2576 fn cast(syntax: SyntaxNode) -> Option<Self> {
2577 if Self::can_cast(syntax.kind()) {
2578 Some(Self { syntax })
2583 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2585 impl AstNode for TupleType {
2586 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_TYPE }
2587 fn cast(syntax: SyntaxNode) -> Option<Self> {
2588 if Self::can_cast(syntax.kind()) {
2589 Some(Self { syntax })
2594 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2596 impl AstNode for TypeBound {
2597 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND }
2598 fn cast(syntax: SyntaxNode) -> Option<Self> {
2599 if Self::can_cast(syntax.kind()) {
2600 Some(Self { syntax })
2605 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2607 impl AstNode for IdentPat {
2608 fn can_cast(kind: SyntaxKind) -> bool { kind == IDENT_PAT }
2609 fn cast(syntax: SyntaxNode) -> Option<Self> {
2610 if Self::can_cast(syntax.kind()) {
2611 Some(Self { syntax })
2616 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2618 impl AstNode for BoxPat {
2619 fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_PAT }
2620 fn cast(syntax: SyntaxNode) -> Option<Self> {
2621 if Self::can_cast(syntax.kind()) {
2622 Some(Self { syntax })
2627 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2629 impl AstNode for RestPat {
2630 fn can_cast(kind: SyntaxKind) -> bool { kind == REST_PAT }
2631 fn cast(syntax: SyntaxNode) -> Option<Self> {
2632 if Self::can_cast(syntax.kind()) {
2633 Some(Self { syntax })
2638 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2640 impl AstNode for LiteralPat {
2641 fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL_PAT }
2642 fn cast(syntax: SyntaxNode) -> Option<Self> {
2643 if Self::can_cast(syntax.kind()) {
2644 Some(Self { syntax })
2649 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2651 impl AstNode for MacroPat {
2652 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_PAT }
2653 fn cast(syntax: SyntaxNode) -> Option<Self> {
2654 if Self::can_cast(syntax.kind()) {
2655 Some(Self { syntax })
2660 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2662 impl AstNode for OrPat {
2663 fn can_cast(kind: SyntaxKind) -> bool { kind == OR_PAT }
2664 fn cast(syntax: SyntaxNode) -> Option<Self> {
2665 if Self::can_cast(syntax.kind()) {
2666 Some(Self { syntax })
2671 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2673 impl AstNode for ParenPat {
2674 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_PAT }
2675 fn cast(syntax: SyntaxNode) -> Option<Self> {
2676 if Self::can_cast(syntax.kind()) {
2677 Some(Self { syntax })
2682 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2684 impl AstNode for PathPat {
2685 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_PAT }
2686 fn cast(syntax: SyntaxNode) -> Option<Self> {
2687 if Self::can_cast(syntax.kind()) {
2688 Some(Self { syntax })
2693 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2695 impl AstNode for WildcardPat {
2696 fn can_cast(kind: SyntaxKind) -> bool { kind == WILDCARD_PAT }
2697 fn cast(syntax: SyntaxNode) -> Option<Self> {
2698 if Self::can_cast(syntax.kind()) {
2699 Some(Self { syntax })
2704 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2706 impl AstNode for RangePat {
2707 fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_PAT }
2708 fn cast(syntax: SyntaxNode) -> Option<Self> {
2709 if Self::can_cast(syntax.kind()) {
2710 Some(Self { syntax })
2715 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2717 impl AstNode for RecordPat {
2718 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT }
2719 fn cast(syntax: SyntaxNode) -> Option<Self> {
2720 if Self::can_cast(syntax.kind()) {
2721 Some(Self { syntax })
2726 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2728 impl AstNode for RefPat {
2729 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_PAT }
2730 fn cast(syntax: SyntaxNode) -> Option<Self> {
2731 if Self::can_cast(syntax.kind()) {
2732 Some(Self { syntax })
2737 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2739 impl AstNode for SlicePat {
2740 fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_PAT }
2741 fn cast(syntax: SyntaxNode) -> Option<Self> {
2742 if Self::can_cast(syntax.kind()) {
2743 Some(Self { syntax })
2748 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2750 impl AstNode for TuplePat {
2751 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_PAT }
2752 fn cast(syntax: SyntaxNode) -> Option<Self> {
2753 if Self::can_cast(syntax.kind()) {
2754 Some(Self { syntax })
2759 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2761 impl AstNode for TupleStructPat {
2762 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_STRUCT_PAT }
2763 fn cast(syntax: SyntaxNode) -> Option<Self> {
2764 if Self::can_cast(syntax.kind()) {
2765 Some(Self { syntax })
2770 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2772 impl AstNode for RecordPatFieldList {
2773 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD_LIST }
2774 fn cast(syntax: SyntaxNode) -> Option<Self> {
2775 if Self::can_cast(syntax.kind()) {
2776 Some(Self { syntax })
2781 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2783 impl AstNode for RecordPatField {
2784 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD }
2785 fn cast(syntax: SyntaxNode) -> Option<Self> {
2786 if Self::can_cast(syntax.kind()) {
2787 Some(Self { syntax })
2792 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2794 impl From<TypeArg> for GenericArg {
2795 fn from(node: TypeArg) -> GenericArg { GenericArg::TypeArg(node) }
2797 impl From<AssocTypeArg> for GenericArg {
2798 fn from(node: AssocTypeArg) -> GenericArg { GenericArg::AssocTypeArg(node) }
2800 impl From<LifetimeArg> for GenericArg {
2801 fn from(node: LifetimeArg) -> GenericArg { GenericArg::LifetimeArg(node) }
2803 impl From<ConstArg> for GenericArg {
2804 fn from(node: ConstArg) -> GenericArg { GenericArg::ConstArg(node) }
2806 impl AstNode for GenericArg {
2807 fn can_cast(kind: SyntaxKind) -> bool {
2809 TYPE_ARG | ASSOC_TYPE_ARG | LIFETIME_ARG | CONST_ARG => true,
2813 fn cast(syntax: SyntaxNode) -> Option<Self> {
2814 let res = match syntax.kind() {
2815 TYPE_ARG => GenericArg::TypeArg(TypeArg { syntax }),
2816 ASSOC_TYPE_ARG => GenericArg::AssocTypeArg(AssocTypeArg { syntax }),
2817 LIFETIME_ARG => GenericArg::LifetimeArg(LifetimeArg { syntax }),
2818 CONST_ARG => GenericArg::ConstArg(ConstArg { syntax }),
2823 fn syntax(&self) -> &SyntaxNode {
2825 GenericArg::TypeArg(it) => &it.syntax,
2826 GenericArg::AssocTypeArg(it) => &it.syntax,
2827 GenericArg::LifetimeArg(it) => &it.syntax,
2828 GenericArg::ConstArg(it) => &it.syntax,
2832 impl From<ArrayType> for Type {
2833 fn from(node: ArrayType) -> Type { Type::ArrayType(node) }
2835 impl From<DynTraitType> for Type {
2836 fn from(node: DynTraitType) -> Type { Type::DynTraitType(node) }
2838 impl From<FnPtrType> for Type {
2839 fn from(node: FnPtrType) -> Type { Type::FnPtrType(node) }
2841 impl From<ForType> for Type {
2842 fn from(node: ForType) -> Type { Type::ForType(node) }
2844 impl From<ImplTraitType> for Type {
2845 fn from(node: ImplTraitType) -> Type { Type::ImplTraitType(node) }
2847 impl From<InferType> for Type {
2848 fn from(node: InferType) -> Type { Type::InferType(node) }
2850 impl From<NeverType> for Type {
2851 fn from(node: NeverType) -> Type { Type::NeverType(node) }
2853 impl From<ParenType> for Type {
2854 fn from(node: ParenType) -> Type { Type::ParenType(node) }
2856 impl From<PathType> for Type {
2857 fn from(node: PathType) -> Type { Type::PathType(node) }
2859 impl From<PtrType> for Type {
2860 fn from(node: PtrType) -> Type { Type::PtrType(node) }
2862 impl From<RefType> for Type {
2863 fn from(node: RefType) -> Type { Type::RefType(node) }
2865 impl From<SliceType> for Type {
2866 fn from(node: SliceType) -> Type { Type::SliceType(node) }
2868 impl From<TupleType> for Type {
2869 fn from(node: TupleType) -> Type { Type::TupleType(node) }
2871 impl AstNode for Type {
2872 fn can_cast(kind: SyntaxKind) -> bool {
2874 ARRAY_TYPE | DYN_TRAIT_TYPE | FN_PTR_TYPE | FOR_TYPE | IMPL_TRAIT_TYPE | INFER_TYPE
2875 | NEVER_TYPE | PAREN_TYPE | PATH_TYPE | PTR_TYPE | REF_TYPE | SLICE_TYPE
2876 | TUPLE_TYPE => true,
2880 fn cast(syntax: SyntaxNode) -> Option<Self> {
2881 let res = match syntax.kind() {
2882 ARRAY_TYPE => Type::ArrayType(ArrayType { syntax }),
2883 DYN_TRAIT_TYPE => Type::DynTraitType(DynTraitType { syntax }),
2884 FN_PTR_TYPE => Type::FnPtrType(FnPtrType { syntax }),
2885 FOR_TYPE => Type::ForType(ForType { syntax }),
2886 IMPL_TRAIT_TYPE => Type::ImplTraitType(ImplTraitType { syntax }),
2887 INFER_TYPE => Type::InferType(InferType { syntax }),
2888 NEVER_TYPE => Type::NeverType(NeverType { syntax }),
2889 PAREN_TYPE => Type::ParenType(ParenType { syntax }),
2890 PATH_TYPE => Type::PathType(PathType { syntax }),
2891 PTR_TYPE => Type::PtrType(PtrType { syntax }),
2892 REF_TYPE => Type::RefType(RefType { syntax }),
2893 SLICE_TYPE => Type::SliceType(SliceType { syntax }),
2894 TUPLE_TYPE => Type::TupleType(TupleType { syntax }),
2899 fn syntax(&self) -> &SyntaxNode {
2901 Type::ArrayType(it) => &it.syntax,
2902 Type::DynTraitType(it) => &it.syntax,
2903 Type::FnPtrType(it) => &it.syntax,
2904 Type::ForType(it) => &it.syntax,
2905 Type::ImplTraitType(it) => &it.syntax,
2906 Type::InferType(it) => &it.syntax,
2907 Type::NeverType(it) => &it.syntax,
2908 Type::ParenType(it) => &it.syntax,
2909 Type::PathType(it) => &it.syntax,
2910 Type::PtrType(it) => &it.syntax,
2911 Type::RefType(it) => &it.syntax,
2912 Type::SliceType(it) => &it.syntax,
2913 Type::TupleType(it) => &it.syntax,
2917 impl From<ArrayExpr> for Expr {
2918 fn from(node: ArrayExpr) -> Expr { Expr::ArrayExpr(node) }
2920 impl From<AwaitExpr> for Expr {
2921 fn from(node: AwaitExpr) -> Expr { Expr::AwaitExpr(node) }
2923 impl From<BinExpr> for Expr {
2924 fn from(node: BinExpr) -> Expr { Expr::BinExpr(node) }
2926 impl From<BlockExpr> for Expr {
2927 fn from(node: BlockExpr) -> Expr { Expr::BlockExpr(node) }
2929 impl From<BoxExpr> for Expr {
2930 fn from(node: BoxExpr) -> Expr { Expr::BoxExpr(node) }
2932 impl From<BreakExpr> for Expr {
2933 fn from(node: BreakExpr) -> Expr { Expr::BreakExpr(node) }
2935 impl From<CallExpr> for Expr {
2936 fn from(node: CallExpr) -> Expr { Expr::CallExpr(node) }
2938 impl From<CastExpr> for Expr {
2939 fn from(node: CastExpr) -> Expr { Expr::CastExpr(node) }
2941 impl From<ClosureExpr> for Expr {
2942 fn from(node: ClosureExpr) -> Expr { Expr::ClosureExpr(node) }
2944 impl From<ContinueExpr> for Expr {
2945 fn from(node: ContinueExpr) -> Expr { Expr::ContinueExpr(node) }
2947 impl From<EffectExpr> for Expr {
2948 fn from(node: EffectExpr) -> Expr { Expr::EffectExpr(node) }
2950 impl From<FieldExpr> for Expr {
2951 fn from(node: FieldExpr) -> Expr { Expr::FieldExpr(node) }
2953 impl From<ForExpr> for Expr {
2954 fn from(node: ForExpr) -> Expr { Expr::ForExpr(node) }
2956 impl From<IfExpr> for Expr {
2957 fn from(node: IfExpr) -> Expr { Expr::IfExpr(node) }
2959 impl From<IndexExpr> for Expr {
2960 fn from(node: IndexExpr) -> Expr { Expr::IndexExpr(node) }
2962 impl From<Literal> for Expr {
2963 fn from(node: Literal) -> Expr { Expr::Literal(node) }
2965 impl From<LoopExpr> for Expr {
2966 fn from(node: LoopExpr) -> Expr { Expr::LoopExpr(node) }
2968 impl From<MacroCall> for Expr {
2969 fn from(node: MacroCall) -> Expr { Expr::MacroCall(node) }
2971 impl From<MatchExpr> for Expr {
2972 fn from(node: MatchExpr) -> Expr { Expr::MatchExpr(node) }
2974 impl From<MethodCallExpr> for Expr {
2975 fn from(node: MethodCallExpr) -> Expr { Expr::MethodCallExpr(node) }
2977 impl From<ParenExpr> for Expr {
2978 fn from(node: ParenExpr) -> Expr { Expr::ParenExpr(node) }
2980 impl From<PathExpr> for Expr {
2981 fn from(node: PathExpr) -> Expr { Expr::PathExpr(node) }
2983 impl From<PrefixExpr> for Expr {
2984 fn from(node: PrefixExpr) -> Expr { Expr::PrefixExpr(node) }
2986 impl From<RangeExpr> for Expr {
2987 fn from(node: RangeExpr) -> Expr { Expr::RangeExpr(node) }
2989 impl From<RecordExpr> for Expr {
2990 fn from(node: RecordExpr) -> Expr { Expr::RecordExpr(node) }
2992 impl From<RefExpr> for Expr {
2993 fn from(node: RefExpr) -> Expr { Expr::RefExpr(node) }
2995 impl From<ReturnExpr> for Expr {
2996 fn from(node: ReturnExpr) -> Expr { Expr::ReturnExpr(node) }
2998 impl From<TryExpr> for Expr {
2999 fn from(node: TryExpr) -> Expr { Expr::TryExpr(node) }
3001 impl From<TupleExpr> for Expr {
3002 fn from(node: TupleExpr) -> Expr { Expr::TupleExpr(node) }
3004 impl From<WhileExpr> for Expr {
3005 fn from(node: WhileExpr) -> Expr { Expr::WhileExpr(node) }
3007 impl AstNode for Expr {
3008 fn can_cast(kind: SyntaxKind) -> bool {
3010 ARRAY_EXPR | AWAIT_EXPR | BIN_EXPR | BLOCK_EXPR | BOX_EXPR | BREAK_EXPR | CALL_EXPR
3011 | CAST_EXPR | CLOSURE_EXPR | CONTINUE_EXPR | EFFECT_EXPR | FIELD_EXPR | FOR_EXPR
3012 | IF_EXPR | INDEX_EXPR | LITERAL | LOOP_EXPR | MACRO_CALL | MATCH_EXPR
3013 | METHOD_CALL_EXPR | PAREN_EXPR | PATH_EXPR | PREFIX_EXPR | RANGE_EXPR
3014 | RECORD_EXPR | REF_EXPR | RETURN_EXPR | TRY_EXPR | TUPLE_EXPR | WHILE_EXPR => true,
3018 fn cast(syntax: SyntaxNode) -> Option<Self> {
3019 let res = match syntax.kind() {
3020 ARRAY_EXPR => Expr::ArrayExpr(ArrayExpr { syntax }),
3021 AWAIT_EXPR => Expr::AwaitExpr(AwaitExpr { syntax }),
3022 BIN_EXPR => Expr::BinExpr(BinExpr { syntax }),
3023 BLOCK_EXPR => Expr::BlockExpr(BlockExpr { syntax }),
3024 BOX_EXPR => Expr::BoxExpr(BoxExpr { syntax }),
3025 BREAK_EXPR => Expr::BreakExpr(BreakExpr { syntax }),
3026 CALL_EXPR => Expr::CallExpr(CallExpr { syntax }),
3027 CAST_EXPR => Expr::CastExpr(CastExpr { syntax }),
3028 CLOSURE_EXPR => Expr::ClosureExpr(ClosureExpr { syntax }),
3029 CONTINUE_EXPR => Expr::ContinueExpr(ContinueExpr { syntax }),
3030 EFFECT_EXPR => Expr::EffectExpr(EffectExpr { syntax }),
3031 FIELD_EXPR => Expr::FieldExpr(FieldExpr { syntax }),
3032 FOR_EXPR => Expr::ForExpr(ForExpr { syntax }),
3033 IF_EXPR => Expr::IfExpr(IfExpr { syntax }),
3034 INDEX_EXPR => Expr::IndexExpr(IndexExpr { syntax }),
3035 LITERAL => Expr::Literal(Literal { syntax }),
3036 LOOP_EXPR => Expr::LoopExpr(LoopExpr { syntax }),
3037 MACRO_CALL => Expr::MacroCall(MacroCall { syntax }),
3038 MATCH_EXPR => Expr::MatchExpr(MatchExpr { syntax }),
3039 METHOD_CALL_EXPR => Expr::MethodCallExpr(MethodCallExpr { syntax }),
3040 PAREN_EXPR => Expr::ParenExpr(ParenExpr { syntax }),
3041 PATH_EXPR => Expr::PathExpr(PathExpr { syntax }),
3042 PREFIX_EXPR => Expr::PrefixExpr(PrefixExpr { syntax }),
3043 RANGE_EXPR => Expr::RangeExpr(RangeExpr { syntax }),
3044 RECORD_EXPR => Expr::RecordExpr(RecordExpr { syntax }),
3045 REF_EXPR => Expr::RefExpr(RefExpr { syntax }),
3046 RETURN_EXPR => Expr::ReturnExpr(ReturnExpr { syntax }),
3047 TRY_EXPR => Expr::TryExpr(TryExpr { syntax }),
3048 TUPLE_EXPR => Expr::TupleExpr(TupleExpr { syntax }),
3049 WHILE_EXPR => Expr::WhileExpr(WhileExpr { syntax }),
3054 fn syntax(&self) -> &SyntaxNode {
3056 Expr::ArrayExpr(it) => &it.syntax,
3057 Expr::AwaitExpr(it) => &it.syntax,
3058 Expr::BinExpr(it) => &it.syntax,
3059 Expr::BlockExpr(it) => &it.syntax,
3060 Expr::BoxExpr(it) => &it.syntax,
3061 Expr::BreakExpr(it) => &it.syntax,
3062 Expr::CallExpr(it) => &it.syntax,
3063 Expr::CastExpr(it) => &it.syntax,
3064 Expr::ClosureExpr(it) => &it.syntax,
3065 Expr::ContinueExpr(it) => &it.syntax,
3066 Expr::EffectExpr(it) => &it.syntax,
3067 Expr::FieldExpr(it) => &it.syntax,
3068 Expr::ForExpr(it) => &it.syntax,
3069 Expr::IfExpr(it) => &it.syntax,
3070 Expr::IndexExpr(it) => &it.syntax,
3071 Expr::Literal(it) => &it.syntax,
3072 Expr::LoopExpr(it) => &it.syntax,
3073 Expr::MacroCall(it) => &it.syntax,
3074 Expr::MatchExpr(it) => &it.syntax,
3075 Expr::MethodCallExpr(it) => &it.syntax,
3076 Expr::ParenExpr(it) => &it.syntax,
3077 Expr::PathExpr(it) => &it.syntax,
3078 Expr::PrefixExpr(it) => &it.syntax,
3079 Expr::RangeExpr(it) => &it.syntax,
3080 Expr::RecordExpr(it) => &it.syntax,
3081 Expr::RefExpr(it) => &it.syntax,
3082 Expr::ReturnExpr(it) => &it.syntax,
3083 Expr::TryExpr(it) => &it.syntax,
3084 Expr::TupleExpr(it) => &it.syntax,
3085 Expr::WhileExpr(it) => &it.syntax,
3089 impl From<Const> for Item {
3090 fn from(node: Const) -> Item { Item::Const(node) }
3092 impl From<Enum> for Item {
3093 fn from(node: Enum) -> Item { Item::Enum(node) }
3095 impl From<ExternBlock> for Item {
3096 fn from(node: ExternBlock) -> Item { Item::ExternBlock(node) }
3098 impl From<ExternCrate> for Item {
3099 fn from(node: ExternCrate) -> Item { Item::ExternCrate(node) }
3101 impl From<Fn> for Item {
3102 fn from(node: Fn) -> Item { Item::Fn(node) }
3104 impl From<Impl> for Item {
3105 fn from(node: Impl) -> Item { Item::Impl(node) }
3107 impl From<MacroCall> for Item {
3108 fn from(node: MacroCall) -> Item { Item::MacroCall(node) }
3110 impl From<MacroRules> for Item {
3111 fn from(node: MacroRules) -> Item { Item::MacroRules(node) }
3113 impl From<MacroDef> for Item {
3114 fn from(node: MacroDef) -> Item { Item::MacroDef(node) }
3116 impl From<Module> for Item {
3117 fn from(node: Module) -> Item { Item::Module(node) }
3119 impl From<Static> for Item {
3120 fn from(node: Static) -> Item { Item::Static(node) }
3122 impl From<Struct> for Item {
3123 fn from(node: Struct) -> Item { Item::Struct(node) }
3125 impl From<Trait> for Item {
3126 fn from(node: Trait) -> Item { Item::Trait(node) }
3128 impl From<TypeAlias> for Item {
3129 fn from(node: TypeAlias) -> Item { Item::TypeAlias(node) }
3131 impl From<Union> for Item {
3132 fn from(node: Union) -> Item { Item::Union(node) }
3134 impl From<Use> for Item {
3135 fn from(node: Use) -> Item { Item::Use(node) }
3137 impl AstNode for Item {
3138 fn can_cast(kind: SyntaxKind) -> bool {
3140 CONST | ENUM | EXTERN_BLOCK | EXTERN_CRATE | FN | IMPL | MACRO_CALL | MACRO_RULES
3141 | MACRO_DEF | MODULE | STATIC | STRUCT | TRAIT | TYPE_ALIAS | UNION | USE => true,
3145 fn cast(syntax: SyntaxNode) -> Option<Self> {
3146 let res = match syntax.kind() {
3147 CONST => Item::Const(Const { syntax }),
3148 ENUM => Item::Enum(Enum { syntax }),
3149 EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }),
3150 EXTERN_CRATE => Item::ExternCrate(ExternCrate { syntax }),
3151 FN => Item::Fn(Fn { syntax }),
3152 IMPL => Item::Impl(Impl { syntax }),
3153 MACRO_CALL => Item::MacroCall(MacroCall { syntax }),
3154 MACRO_RULES => Item::MacroRules(MacroRules { syntax }),
3155 MACRO_DEF => Item::MacroDef(MacroDef { syntax }),
3156 MODULE => Item::Module(Module { syntax }),
3157 STATIC => Item::Static(Static { syntax }),
3158 STRUCT => Item::Struct(Struct { syntax }),
3159 TRAIT => Item::Trait(Trait { syntax }),
3160 TYPE_ALIAS => Item::TypeAlias(TypeAlias { syntax }),
3161 UNION => Item::Union(Union { syntax }),
3162 USE => Item::Use(Use { syntax }),
3167 fn syntax(&self) -> &SyntaxNode {
3169 Item::Const(it) => &it.syntax,
3170 Item::Enum(it) => &it.syntax,
3171 Item::ExternBlock(it) => &it.syntax,
3172 Item::ExternCrate(it) => &it.syntax,
3173 Item::Fn(it) => &it.syntax,
3174 Item::Impl(it) => &it.syntax,
3175 Item::MacroCall(it) => &it.syntax,
3176 Item::MacroRules(it) => &it.syntax,
3177 Item::MacroDef(it) => &it.syntax,
3178 Item::Module(it) => &it.syntax,
3179 Item::Static(it) => &it.syntax,
3180 Item::Struct(it) => &it.syntax,
3181 Item::Trait(it) => &it.syntax,
3182 Item::TypeAlias(it) => &it.syntax,
3183 Item::Union(it) => &it.syntax,
3184 Item::Use(it) => &it.syntax,
3188 impl From<ExprStmt> for Stmt {
3189 fn from(node: ExprStmt) -> Stmt { Stmt::ExprStmt(node) }
3191 impl From<Item> for Stmt {
3192 fn from(node: Item) -> Stmt { Stmt::Item(node) }
3194 impl From<LetStmt> for Stmt {
3195 fn from(node: LetStmt) -> Stmt { Stmt::LetStmt(node) }
3197 impl From<IdentPat> for Pat {
3198 fn from(node: IdentPat) -> Pat { Pat::IdentPat(node) }
3200 impl From<BoxPat> for Pat {
3201 fn from(node: BoxPat) -> Pat { Pat::BoxPat(node) }
3203 impl From<RestPat> for Pat {
3204 fn from(node: RestPat) -> Pat { Pat::RestPat(node) }
3206 impl From<LiteralPat> for Pat {
3207 fn from(node: LiteralPat) -> Pat { Pat::LiteralPat(node) }
3209 impl From<MacroPat> for Pat {
3210 fn from(node: MacroPat) -> Pat { Pat::MacroPat(node) }
3212 impl From<OrPat> for Pat {
3213 fn from(node: OrPat) -> Pat { Pat::OrPat(node) }
3215 impl From<ParenPat> for Pat {
3216 fn from(node: ParenPat) -> Pat { Pat::ParenPat(node) }
3218 impl From<PathPat> for Pat {
3219 fn from(node: PathPat) -> Pat { Pat::PathPat(node) }
3221 impl From<WildcardPat> for Pat {
3222 fn from(node: WildcardPat) -> Pat { Pat::WildcardPat(node) }
3224 impl From<RangePat> for Pat {
3225 fn from(node: RangePat) -> Pat { Pat::RangePat(node) }
3227 impl From<RecordPat> for Pat {
3228 fn from(node: RecordPat) -> Pat { Pat::RecordPat(node) }
3230 impl From<RefPat> for Pat {
3231 fn from(node: RefPat) -> Pat { Pat::RefPat(node) }
3233 impl From<SlicePat> for Pat {
3234 fn from(node: SlicePat) -> Pat { Pat::SlicePat(node) }
3236 impl From<TuplePat> for Pat {
3237 fn from(node: TuplePat) -> Pat { Pat::TuplePat(node) }
3239 impl From<TupleStructPat> for Pat {
3240 fn from(node: TupleStructPat) -> Pat { Pat::TupleStructPat(node) }
3242 impl AstNode for Pat {
3243 fn can_cast(kind: SyntaxKind) -> bool {
3245 IDENT_PAT | BOX_PAT | REST_PAT | LITERAL_PAT | MACRO_PAT | OR_PAT | PAREN_PAT
3246 | PATH_PAT | WILDCARD_PAT | RANGE_PAT | RECORD_PAT | REF_PAT | SLICE_PAT
3247 | TUPLE_PAT | TUPLE_STRUCT_PAT => true,
3251 fn cast(syntax: SyntaxNode) -> Option<Self> {
3252 let res = match syntax.kind() {
3253 IDENT_PAT => Pat::IdentPat(IdentPat { syntax }),
3254 BOX_PAT => Pat::BoxPat(BoxPat { syntax }),
3255 REST_PAT => Pat::RestPat(RestPat { syntax }),
3256 LITERAL_PAT => Pat::LiteralPat(LiteralPat { syntax }),
3257 MACRO_PAT => Pat::MacroPat(MacroPat { syntax }),
3258 OR_PAT => Pat::OrPat(OrPat { syntax }),
3259 PAREN_PAT => Pat::ParenPat(ParenPat { syntax }),
3260 PATH_PAT => Pat::PathPat(PathPat { syntax }),
3261 WILDCARD_PAT => Pat::WildcardPat(WildcardPat { syntax }),
3262 RANGE_PAT => Pat::RangePat(RangePat { syntax }),
3263 RECORD_PAT => Pat::RecordPat(RecordPat { syntax }),
3264 REF_PAT => Pat::RefPat(RefPat { syntax }),
3265 SLICE_PAT => Pat::SlicePat(SlicePat { syntax }),
3266 TUPLE_PAT => Pat::TuplePat(TuplePat { syntax }),
3267 TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }),
3272 fn syntax(&self) -> &SyntaxNode {
3274 Pat::IdentPat(it) => &it.syntax,
3275 Pat::BoxPat(it) => &it.syntax,
3276 Pat::RestPat(it) => &it.syntax,
3277 Pat::LiteralPat(it) => &it.syntax,
3278 Pat::MacroPat(it) => &it.syntax,
3279 Pat::OrPat(it) => &it.syntax,
3280 Pat::ParenPat(it) => &it.syntax,
3281 Pat::PathPat(it) => &it.syntax,
3282 Pat::WildcardPat(it) => &it.syntax,
3283 Pat::RangePat(it) => &it.syntax,
3284 Pat::RecordPat(it) => &it.syntax,
3285 Pat::RefPat(it) => &it.syntax,
3286 Pat::SlicePat(it) => &it.syntax,
3287 Pat::TuplePat(it) => &it.syntax,
3288 Pat::TupleStructPat(it) => &it.syntax,
3292 impl From<RecordFieldList> for FieldList {
3293 fn from(node: RecordFieldList) -> FieldList { FieldList::RecordFieldList(node) }
3295 impl From<TupleFieldList> for FieldList {
3296 fn from(node: TupleFieldList) -> FieldList { FieldList::TupleFieldList(node) }
3298 impl AstNode for FieldList {
3299 fn can_cast(kind: SyntaxKind) -> bool {
3301 RECORD_FIELD_LIST | TUPLE_FIELD_LIST => true,
3305 fn cast(syntax: SyntaxNode) -> Option<Self> {
3306 let res = match syntax.kind() {
3307 RECORD_FIELD_LIST => FieldList::RecordFieldList(RecordFieldList { syntax }),
3308 TUPLE_FIELD_LIST => FieldList::TupleFieldList(TupleFieldList { syntax }),
3313 fn syntax(&self) -> &SyntaxNode {
3315 FieldList::RecordFieldList(it) => &it.syntax,
3316 FieldList::TupleFieldList(it) => &it.syntax,
3320 impl From<Enum> for AdtDef {
3321 fn from(node: Enum) -> AdtDef { AdtDef::Enum(node) }
3323 impl From<Struct> for AdtDef {
3324 fn from(node: Struct) -> AdtDef { AdtDef::Struct(node) }
3326 impl From<Union> for AdtDef {
3327 fn from(node: Union) -> AdtDef { AdtDef::Union(node) }
3329 impl AstNode for AdtDef {
3330 fn can_cast(kind: SyntaxKind) -> bool {
3332 ENUM | STRUCT | UNION => true,
3336 fn cast(syntax: SyntaxNode) -> Option<Self> {
3337 let res = match syntax.kind() {
3338 ENUM => AdtDef::Enum(Enum { syntax }),
3339 STRUCT => AdtDef::Struct(Struct { syntax }),
3340 UNION => AdtDef::Union(Union { syntax }),
3345 fn syntax(&self) -> &SyntaxNode {
3347 AdtDef::Enum(it) => &it.syntax,
3348 AdtDef::Struct(it) => &it.syntax,
3349 AdtDef::Union(it) => &it.syntax,
3353 impl From<Const> for AssocItem {
3354 fn from(node: Const) -> AssocItem { AssocItem::Const(node) }
3356 impl From<Fn> for AssocItem {
3357 fn from(node: Fn) -> AssocItem { AssocItem::Fn(node) }
3359 impl From<MacroCall> for AssocItem {
3360 fn from(node: MacroCall) -> AssocItem { AssocItem::MacroCall(node) }
3362 impl From<TypeAlias> for AssocItem {
3363 fn from(node: TypeAlias) -> AssocItem { AssocItem::TypeAlias(node) }
3365 impl AstNode for AssocItem {
3366 fn can_cast(kind: SyntaxKind) -> bool {
3368 CONST | FN | MACRO_CALL | TYPE_ALIAS => true,
3372 fn cast(syntax: SyntaxNode) -> Option<Self> {
3373 let res = match syntax.kind() {
3374 CONST => AssocItem::Const(Const { syntax }),
3375 FN => AssocItem::Fn(Fn { syntax }),
3376 MACRO_CALL => AssocItem::MacroCall(MacroCall { syntax }),
3377 TYPE_ALIAS => AssocItem::TypeAlias(TypeAlias { syntax }),
3382 fn syntax(&self) -> &SyntaxNode {
3384 AssocItem::Const(it) => &it.syntax,
3385 AssocItem::Fn(it) => &it.syntax,
3386 AssocItem::MacroCall(it) => &it.syntax,
3387 AssocItem::TypeAlias(it) => &it.syntax,
3391 impl From<Fn> for ExternItem {
3392 fn from(node: Fn) -> ExternItem { ExternItem::Fn(node) }
3394 impl From<MacroCall> for ExternItem {
3395 fn from(node: MacroCall) -> ExternItem { ExternItem::MacroCall(node) }
3397 impl From<Static> for ExternItem {
3398 fn from(node: Static) -> ExternItem { ExternItem::Static(node) }
3400 impl From<TypeAlias> for ExternItem {
3401 fn from(node: TypeAlias) -> ExternItem { ExternItem::TypeAlias(node) }
3403 impl AstNode for ExternItem {
3404 fn can_cast(kind: SyntaxKind) -> bool {
3406 FN | MACRO_CALL | STATIC | TYPE_ALIAS => true,
3410 fn cast(syntax: SyntaxNode) -> Option<Self> {
3411 let res = match syntax.kind() {
3412 FN => ExternItem::Fn(Fn { syntax }),
3413 MACRO_CALL => ExternItem::MacroCall(MacroCall { syntax }),
3414 STATIC => ExternItem::Static(Static { syntax }),
3415 TYPE_ALIAS => ExternItem::TypeAlias(TypeAlias { syntax }),
3420 fn syntax(&self) -> &SyntaxNode {
3422 ExternItem::Fn(it) => &it.syntax,
3423 ExternItem::MacroCall(it) => &it.syntax,
3424 ExternItem::Static(it) => &it.syntax,
3425 ExternItem::TypeAlias(it) => &it.syntax,
3429 impl From<ConstParam> for GenericParam {
3430 fn from(node: ConstParam) -> GenericParam { GenericParam::ConstParam(node) }
3432 impl From<LifetimeParam> for GenericParam {
3433 fn from(node: LifetimeParam) -> GenericParam { GenericParam::LifetimeParam(node) }
3435 impl From<TypeParam> for GenericParam {
3436 fn from(node: TypeParam) -> GenericParam { GenericParam::TypeParam(node) }
3438 impl AstNode for GenericParam {
3439 fn can_cast(kind: SyntaxKind) -> bool {
3441 CONST_PARAM | LIFETIME_PARAM | TYPE_PARAM => true,
3445 fn cast(syntax: SyntaxNode) -> Option<Self> {
3446 let res = match syntax.kind() {
3447 CONST_PARAM => GenericParam::ConstParam(ConstParam { syntax }),
3448 LIFETIME_PARAM => GenericParam::LifetimeParam(LifetimeParam { syntax }),
3449 TYPE_PARAM => GenericParam::TypeParam(TypeParam { syntax }),
3454 fn syntax(&self) -> &SyntaxNode {
3456 GenericParam::ConstParam(it) => &it.syntax,
3457 GenericParam::LifetimeParam(it) => &it.syntax,
3458 GenericParam::TypeParam(it) => &it.syntax,
3462 impl std::fmt::Display for GenericArg {
3463 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3464 std::fmt::Display::fmt(self.syntax(), f)
3467 impl std::fmt::Display for Type {
3468 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3469 std::fmt::Display::fmt(self.syntax(), f)
3472 impl std::fmt::Display for Expr {
3473 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3474 std::fmt::Display::fmt(self.syntax(), f)
3477 impl std::fmt::Display for Item {
3478 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3479 std::fmt::Display::fmt(self.syntax(), f)
3482 impl std::fmt::Display for Stmt {
3483 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3484 std::fmt::Display::fmt(self.syntax(), f)
3487 impl std::fmt::Display for Pat {
3488 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3489 std::fmt::Display::fmt(self.syntax(), f)
3492 impl std::fmt::Display for FieldList {
3493 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3494 std::fmt::Display::fmt(self.syntax(), f)
3497 impl std::fmt::Display for AdtDef {
3498 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3499 std::fmt::Display::fmt(self.syntax(), f)
3502 impl std::fmt::Display for AssocItem {
3503 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3504 std::fmt::Display::fmt(self.syntax(), f)
3507 impl std::fmt::Display for ExternItem {
3508 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3509 std::fmt::Display::fmt(self.syntax(), f)
3512 impl std::fmt::Display for GenericParam {
3513 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3514 std::fmt::Display::fmt(self.syntax(), f)
3517 impl std::fmt::Display for Name {
3518 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3519 std::fmt::Display::fmt(self.syntax(), f)
3522 impl std::fmt::Display for NameRef {
3523 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3524 std::fmt::Display::fmt(self.syntax(), f)
3527 impl std::fmt::Display for Path {
3528 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3529 std::fmt::Display::fmt(self.syntax(), f)
3532 impl std::fmt::Display for PathSegment {
3533 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3534 std::fmt::Display::fmt(self.syntax(), f)
3537 impl std::fmt::Display for GenericArgList {
3538 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3539 std::fmt::Display::fmt(self.syntax(), f)
3542 impl std::fmt::Display for ParamList {
3543 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3544 std::fmt::Display::fmt(self.syntax(), f)
3547 impl std::fmt::Display for RetType {
3548 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3549 std::fmt::Display::fmt(self.syntax(), f)
3552 impl std::fmt::Display for PathType {
3553 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3554 std::fmt::Display::fmt(self.syntax(), f)
3557 impl std::fmt::Display for TypeArg {
3558 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3559 std::fmt::Display::fmt(self.syntax(), f)
3562 impl std::fmt::Display for AssocTypeArg {
3563 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3564 std::fmt::Display::fmt(self.syntax(), f)
3567 impl std::fmt::Display for LifetimeArg {
3568 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3569 std::fmt::Display::fmt(self.syntax(), f)
3572 impl std::fmt::Display for ConstArg {
3573 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3574 std::fmt::Display::fmt(self.syntax(), f)
3577 impl std::fmt::Display for TypeBoundList {
3578 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3579 std::fmt::Display::fmt(self.syntax(), f)
3582 impl std::fmt::Display for MacroCall {
3583 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3584 std::fmt::Display::fmt(self.syntax(), f)
3587 impl std::fmt::Display for Attr {
3588 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3589 std::fmt::Display::fmt(self.syntax(), f)
3592 impl std::fmt::Display for TokenTree {
3593 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3594 std::fmt::Display::fmt(self.syntax(), f)
3597 impl std::fmt::Display for MacroItems {
3598 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3599 std::fmt::Display::fmt(self.syntax(), f)
3602 impl std::fmt::Display for MacroStmts {
3603 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3604 std::fmt::Display::fmt(self.syntax(), f)
3607 impl std::fmt::Display for SourceFile {
3608 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3609 std::fmt::Display::fmt(self.syntax(), f)
3612 impl std::fmt::Display for Const {
3613 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3614 std::fmt::Display::fmt(self.syntax(), f)
3617 impl std::fmt::Display for Enum {
3618 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3619 std::fmt::Display::fmt(self.syntax(), f)
3622 impl std::fmt::Display for ExternBlock {
3623 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3624 std::fmt::Display::fmt(self.syntax(), f)
3627 impl std::fmt::Display for ExternCrate {
3628 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3629 std::fmt::Display::fmt(self.syntax(), f)
3632 impl std::fmt::Display for Fn {
3633 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3634 std::fmt::Display::fmt(self.syntax(), f)
3637 impl std::fmt::Display for Impl {
3638 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3639 std::fmt::Display::fmt(self.syntax(), f)
3642 impl std::fmt::Display for MacroRules {
3643 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3644 std::fmt::Display::fmt(self.syntax(), f)
3647 impl std::fmt::Display for MacroDef {
3648 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3649 std::fmt::Display::fmt(self.syntax(), f)
3652 impl std::fmt::Display for Module {
3653 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3654 std::fmt::Display::fmt(self.syntax(), f)
3657 impl std::fmt::Display for Static {
3658 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3659 std::fmt::Display::fmt(self.syntax(), f)
3662 impl std::fmt::Display for Struct {
3663 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3664 std::fmt::Display::fmt(self.syntax(), f)
3667 impl std::fmt::Display for Trait {
3668 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3669 std::fmt::Display::fmt(self.syntax(), f)
3672 impl std::fmt::Display for TypeAlias {
3673 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3674 std::fmt::Display::fmt(self.syntax(), f)
3677 impl std::fmt::Display for Union {
3678 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3679 std::fmt::Display::fmt(self.syntax(), f)
3682 impl std::fmt::Display for Use {
3683 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3684 std::fmt::Display::fmt(self.syntax(), f)
3687 impl std::fmt::Display for Visibility {
3688 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3689 std::fmt::Display::fmt(self.syntax(), f)
3692 impl std::fmt::Display for ItemList {
3693 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3694 std::fmt::Display::fmt(self.syntax(), f)
3697 impl std::fmt::Display for Rename {
3698 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3699 std::fmt::Display::fmt(self.syntax(), f)
3702 impl std::fmt::Display for UseTree {
3703 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3704 std::fmt::Display::fmt(self.syntax(), f)
3707 impl std::fmt::Display for UseTreeList {
3708 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3709 std::fmt::Display::fmt(self.syntax(), f)
3712 impl std::fmt::Display for Abi {
3713 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3714 std::fmt::Display::fmt(self.syntax(), f)
3717 impl std::fmt::Display for GenericParamList {
3718 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3719 std::fmt::Display::fmt(self.syntax(), f)
3722 impl std::fmt::Display for WhereClause {
3723 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3724 std::fmt::Display::fmt(self.syntax(), f)
3727 impl std::fmt::Display for BlockExpr {
3728 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3729 std::fmt::Display::fmt(self.syntax(), f)
3732 impl std::fmt::Display for SelfParam {
3733 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3734 std::fmt::Display::fmt(self.syntax(), f)
3737 impl std::fmt::Display for Param {
3738 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3739 std::fmt::Display::fmt(self.syntax(), f)
3742 impl std::fmt::Display for RecordFieldList {
3743 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3744 std::fmt::Display::fmt(self.syntax(), f)
3747 impl std::fmt::Display for TupleFieldList {
3748 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3749 std::fmt::Display::fmt(self.syntax(), f)
3752 impl std::fmt::Display for RecordField {
3753 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3754 std::fmt::Display::fmt(self.syntax(), f)
3757 impl std::fmt::Display for TupleField {
3758 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3759 std::fmt::Display::fmt(self.syntax(), f)
3762 impl std::fmt::Display for VariantList {
3763 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3764 std::fmt::Display::fmt(self.syntax(), f)
3767 impl std::fmt::Display for Variant {
3768 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3769 std::fmt::Display::fmt(self.syntax(), f)
3772 impl std::fmt::Display for AssocItemList {
3773 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3774 std::fmt::Display::fmt(self.syntax(), f)
3777 impl std::fmt::Display for ExternItemList {
3778 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3779 std::fmt::Display::fmt(self.syntax(), f)
3782 impl std::fmt::Display for ConstParam {
3783 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3784 std::fmt::Display::fmt(self.syntax(), f)
3787 impl std::fmt::Display for LifetimeParam {
3788 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3789 std::fmt::Display::fmt(self.syntax(), f)
3792 impl std::fmt::Display for TypeParam {
3793 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3794 std::fmt::Display::fmt(self.syntax(), f)
3797 impl std::fmt::Display for WherePred {
3798 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3799 std::fmt::Display::fmt(self.syntax(), f)
3802 impl std::fmt::Display for Literal {
3803 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3804 std::fmt::Display::fmt(self.syntax(), f)
3807 impl std::fmt::Display for ExprStmt {
3808 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3809 std::fmt::Display::fmt(self.syntax(), f)
3812 impl std::fmt::Display for LetStmt {
3813 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3814 std::fmt::Display::fmt(self.syntax(), f)
3817 impl std::fmt::Display for ArrayExpr {
3818 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3819 std::fmt::Display::fmt(self.syntax(), f)
3822 impl std::fmt::Display for AwaitExpr {
3823 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3824 std::fmt::Display::fmt(self.syntax(), f)
3827 impl std::fmt::Display for BinExpr {
3828 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3829 std::fmt::Display::fmt(self.syntax(), f)
3832 impl std::fmt::Display for BoxExpr {
3833 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3834 std::fmt::Display::fmt(self.syntax(), f)
3837 impl std::fmt::Display for BreakExpr {
3838 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3839 std::fmt::Display::fmt(self.syntax(), f)
3842 impl std::fmt::Display for CallExpr {
3843 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3844 std::fmt::Display::fmt(self.syntax(), f)
3847 impl std::fmt::Display for CastExpr {
3848 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3849 std::fmt::Display::fmt(self.syntax(), f)
3852 impl std::fmt::Display for ClosureExpr {
3853 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3854 std::fmt::Display::fmt(self.syntax(), f)
3857 impl std::fmt::Display for ContinueExpr {
3858 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3859 std::fmt::Display::fmt(self.syntax(), f)
3862 impl std::fmt::Display for EffectExpr {
3863 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3864 std::fmt::Display::fmt(self.syntax(), f)
3867 impl std::fmt::Display for FieldExpr {
3868 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3869 std::fmt::Display::fmt(self.syntax(), f)
3872 impl std::fmt::Display for ForExpr {
3873 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3874 std::fmt::Display::fmt(self.syntax(), f)
3877 impl std::fmt::Display for IfExpr {
3878 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3879 std::fmt::Display::fmt(self.syntax(), f)
3882 impl std::fmt::Display for IndexExpr {
3883 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3884 std::fmt::Display::fmt(self.syntax(), f)
3887 impl std::fmt::Display for LoopExpr {
3888 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3889 std::fmt::Display::fmt(self.syntax(), f)
3892 impl std::fmt::Display for MatchExpr {
3893 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3894 std::fmt::Display::fmt(self.syntax(), f)
3897 impl std::fmt::Display for MethodCallExpr {
3898 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3899 std::fmt::Display::fmt(self.syntax(), f)
3902 impl std::fmt::Display for ParenExpr {
3903 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3904 std::fmt::Display::fmt(self.syntax(), f)
3907 impl std::fmt::Display for PathExpr {
3908 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3909 std::fmt::Display::fmt(self.syntax(), f)
3912 impl std::fmt::Display for PrefixExpr {
3913 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3914 std::fmt::Display::fmt(self.syntax(), f)
3917 impl std::fmt::Display for RangeExpr {
3918 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3919 std::fmt::Display::fmt(self.syntax(), f)
3922 impl std::fmt::Display for RecordExpr {
3923 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3924 std::fmt::Display::fmt(self.syntax(), f)
3927 impl std::fmt::Display for RefExpr {
3928 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3929 std::fmt::Display::fmt(self.syntax(), f)
3932 impl std::fmt::Display for ReturnExpr {
3933 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3934 std::fmt::Display::fmt(self.syntax(), f)
3937 impl std::fmt::Display for TryExpr {
3938 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3939 std::fmt::Display::fmt(self.syntax(), f)
3942 impl std::fmt::Display for TupleExpr {
3943 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3944 std::fmt::Display::fmt(self.syntax(), f)
3947 impl std::fmt::Display for WhileExpr {
3948 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3949 std::fmt::Display::fmt(self.syntax(), f)
3952 impl std::fmt::Display for Label {
3953 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3954 std::fmt::Display::fmt(self.syntax(), f)
3957 impl std::fmt::Display for RecordExprFieldList {
3958 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3959 std::fmt::Display::fmt(self.syntax(), f)
3962 impl std::fmt::Display for RecordExprField {
3963 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3964 std::fmt::Display::fmt(self.syntax(), f)
3967 impl std::fmt::Display for ArgList {
3968 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3969 std::fmt::Display::fmt(self.syntax(), f)
3972 impl std::fmt::Display for Condition {
3973 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3974 std::fmt::Display::fmt(self.syntax(), f)
3977 impl std::fmt::Display for MatchArmList {
3978 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3979 std::fmt::Display::fmt(self.syntax(), f)
3982 impl std::fmt::Display for MatchArm {
3983 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3984 std::fmt::Display::fmt(self.syntax(), f)
3987 impl std::fmt::Display for MatchGuard {
3988 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3989 std::fmt::Display::fmt(self.syntax(), f)
3992 impl std::fmt::Display for ArrayType {
3993 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3994 std::fmt::Display::fmt(self.syntax(), f)
3997 impl std::fmt::Display for DynTraitType {
3998 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3999 std::fmt::Display::fmt(self.syntax(), f)
4002 impl std::fmt::Display for FnPtrType {
4003 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4004 std::fmt::Display::fmt(self.syntax(), f)
4007 impl std::fmt::Display for ForType {
4008 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4009 std::fmt::Display::fmt(self.syntax(), f)
4012 impl std::fmt::Display for ImplTraitType {
4013 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4014 std::fmt::Display::fmt(self.syntax(), f)
4017 impl std::fmt::Display for InferType {
4018 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4019 std::fmt::Display::fmt(self.syntax(), f)
4022 impl std::fmt::Display for NeverType {
4023 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4024 std::fmt::Display::fmt(self.syntax(), f)
4027 impl std::fmt::Display for ParenType {
4028 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4029 std::fmt::Display::fmt(self.syntax(), f)
4032 impl std::fmt::Display for PtrType {
4033 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4034 std::fmt::Display::fmt(self.syntax(), f)
4037 impl std::fmt::Display for RefType {
4038 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4039 std::fmt::Display::fmt(self.syntax(), f)
4042 impl std::fmt::Display for SliceType {
4043 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4044 std::fmt::Display::fmt(self.syntax(), f)
4047 impl std::fmt::Display for TupleType {
4048 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4049 std::fmt::Display::fmt(self.syntax(), f)
4052 impl std::fmt::Display for TypeBound {
4053 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4054 std::fmt::Display::fmt(self.syntax(), f)
4057 impl std::fmt::Display for IdentPat {
4058 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4059 std::fmt::Display::fmt(self.syntax(), f)
4062 impl std::fmt::Display for BoxPat {
4063 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4064 std::fmt::Display::fmt(self.syntax(), f)
4067 impl std::fmt::Display for RestPat {
4068 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4069 std::fmt::Display::fmt(self.syntax(), f)
4072 impl std::fmt::Display for LiteralPat {
4073 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4074 std::fmt::Display::fmt(self.syntax(), f)
4077 impl std::fmt::Display for MacroPat {
4078 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4079 std::fmt::Display::fmt(self.syntax(), f)
4082 impl std::fmt::Display for OrPat {
4083 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4084 std::fmt::Display::fmt(self.syntax(), f)
4087 impl std::fmt::Display for ParenPat {
4088 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4089 std::fmt::Display::fmt(self.syntax(), f)
4092 impl std::fmt::Display for PathPat {
4093 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4094 std::fmt::Display::fmt(self.syntax(), f)
4097 impl std::fmt::Display for WildcardPat {
4098 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4099 std::fmt::Display::fmt(self.syntax(), f)
4102 impl std::fmt::Display for RangePat {
4103 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4104 std::fmt::Display::fmt(self.syntax(), f)
4107 impl std::fmt::Display for RecordPat {
4108 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4109 std::fmt::Display::fmt(self.syntax(), f)
4112 impl std::fmt::Display for RefPat {
4113 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4114 std::fmt::Display::fmt(self.syntax(), f)
4117 impl std::fmt::Display for SlicePat {
4118 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4119 std::fmt::Display::fmt(self.syntax(), f)
4122 impl std::fmt::Display for TuplePat {
4123 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4124 std::fmt::Display::fmt(self.syntax(), f)
4127 impl std::fmt::Display for TupleStructPat {
4128 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4129 std::fmt::Display::fmt(self.syntax(), f)
4132 impl std::fmt::Display for RecordPatFieldList {
4133 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4134 std::fmt::Display::fmt(self.syntax(), f)
4137 impl std::fmt::Display for RecordPatField {
4138 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4139 std::fmt::Display::fmt(self.syntax(), f)