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 {}
131 impl ast::NameOwner for MacroCall {}
133 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
134 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
135 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
136 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
138 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
140 pub(crate) syntax: SyntaxNode,
143 pub fn pound_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![#]) }
144 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
145 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
146 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
147 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
148 pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }
149 pub fn token_tree(&self) -> Option<TokenTree> { support::child(&self.syntax) }
150 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
152 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
153 pub struct TokenTree {
154 pub(crate) syntax: SyntaxNode,
157 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
158 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
159 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
160 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
161 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
162 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
164 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
165 pub struct MacroItems {
166 pub(crate) syntax: SyntaxNode,
168 impl ast::ModuleItemOwner for MacroItems {}
170 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
171 pub struct MacroStmts {
172 pub(crate) syntax: SyntaxNode,
175 pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }
176 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
178 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
179 pub struct SourceFile {
180 pub(crate) syntax: SyntaxNode,
182 impl ast::AttrsOwner for SourceFile {}
183 impl ast::ModuleItemOwner for SourceFile {}
185 pub fn shebang_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![shebang]) }
187 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
189 pub(crate) syntax: SyntaxNode,
191 impl ast::AttrsOwner for Const {}
192 impl ast::NameOwner for Const {}
193 impl ast::VisibilityOwner for Const {}
195 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
196 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
197 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
198 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
199 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
200 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
201 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
202 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
204 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
206 pub(crate) syntax: SyntaxNode,
208 impl ast::AttrsOwner for Enum {}
209 impl ast::NameOwner for Enum {}
210 impl ast::VisibilityOwner for Enum {}
211 impl ast::GenericParamsOwner for Enum {}
213 pub fn enum_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![enum]) }
214 pub fn variant_list(&self) -> Option<VariantList> { support::child(&self.syntax) }
216 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
217 pub struct ExternBlock {
218 pub(crate) syntax: SyntaxNode,
220 impl ast::AttrsOwner for ExternBlock {}
222 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
223 pub fn extern_item_list(&self) -> Option<ExternItemList> { support::child(&self.syntax) }
225 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
226 pub struct ExternCrate {
227 pub(crate) syntax: SyntaxNode,
229 impl ast::AttrsOwner for ExternCrate {}
230 impl ast::VisibilityOwner for ExternCrate {}
232 pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }
233 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
234 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
235 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
236 pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) }
237 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
239 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
241 pub(crate) syntax: SyntaxNode,
243 impl ast::AttrsOwner for Fn {}
244 impl ast::NameOwner for Fn {}
245 impl ast::VisibilityOwner for Fn {}
246 impl ast::GenericParamsOwner for Fn {}
248 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
249 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
250 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
251 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
252 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
253 pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }
254 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
255 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
256 pub fn body(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
257 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
259 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
261 pub(crate) syntax: SyntaxNode,
263 impl ast::AttrsOwner for Impl {}
264 impl ast::VisibilityOwner for Impl {}
265 impl ast::GenericParamsOwner for Impl {}
267 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
268 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
269 pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }
270 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
271 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
272 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
273 pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) }
275 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
277 pub(crate) syntax: SyntaxNode,
279 impl ast::AttrsOwner for Module {}
280 impl ast::NameOwner for Module {}
281 impl ast::VisibilityOwner for Module {}
283 pub fn mod_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mod]) }
284 pub fn item_list(&self) -> Option<ItemList> { support::child(&self.syntax) }
285 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
287 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
289 pub(crate) syntax: SyntaxNode,
291 impl ast::AttrsOwner for Static {}
292 impl ast::NameOwner for Static {}
293 impl ast::VisibilityOwner for Static {}
295 pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
296 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
297 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
298 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
299 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
300 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
301 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
303 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
305 pub(crate) syntax: SyntaxNode,
307 impl ast::AttrsOwner for Struct {}
308 impl ast::NameOwner for Struct {}
309 impl ast::VisibilityOwner for Struct {}
310 impl ast::GenericParamsOwner for Struct {}
312 pub fn struct_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![struct]) }
313 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
314 pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) }
316 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
318 pub(crate) syntax: SyntaxNode,
320 impl ast::AttrsOwner for Trait {}
321 impl ast::NameOwner for Trait {}
322 impl ast::VisibilityOwner for Trait {}
323 impl ast::GenericParamsOwner for Trait {}
324 impl ast::TypeBoundsOwner for Trait {}
326 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
327 pub fn auto_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![auto]) }
328 pub fn trait_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![trait]) }
329 pub fn assoc_item_list(&self) -> Option<AssocItemList> { support::child(&self.syntax) }
331 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
332 pub struct TypeAlias {
333 pub(crate) syntax: SyntaxNode,
335 impl ast::AttrsOwner for TypeAlias {}
336 impl ast::NameOwner for TypeAlias {}
337 impl ast::VisibilityOwner for TypeAlias {}
338 impl ast::GenericParamsOwner for TypeAlias {}
339 impl ast::TypeBoundsOwner for TypeAlias {}
341 pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
342 pub fn type_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![type]) }
343 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
344 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
345 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
347 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
349 pub(crate) syntax: SyntaxNode,
351 impl ast::AttrsOwner for Union {}
352 impl ast::NameOwner for Union {}
353 impl ast::VisibilityOwner for Union {}
354 impl ast::GenericParamsOwner for Union {}
356 pub fn union_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![union]) }
357 pub fn record_field_list(&self) -> Option<RecordFieldList> { support::child(&self.syntax) }
359 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
361 pub(crate) syntax: SyntaxNode,
363 impl ast::AttrsOwner for Use {}
364 impl ast::VisibilityOwner for Use {}
366 pub fn use_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![use]) }
367 pub fn use_tree(&self) -> Option<UseTree> { support::child(&self.syntax) }
368 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
370 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
371 pub struct Visibility {
372 pub(crate) syntax: SyntaxNode,
375 pub fn pub_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![pub]) }
376 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
377 pub fn super_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![super]) }
378 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
379 pub fn crate_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![crate]) }
380 pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }
381 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
382 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
384 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
385 pub struct ItemList {
386 pub(crate) syntax: SyntaxNode,
388 impl ast::AttrsOwner for ItemList {}
389 impl ast::ModuleItemOwner for ItemList {}
391 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
392 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
394 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
396 pub(crate) syntax: SyntaxNode,
398 impl ast::NameOwner for Rename {}
400 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
401 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
403 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
405 pub(crate) syntax: SyntaxNode,
408 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
409 pub fn coloncolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![::]) }
410 pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }
411 pub fn use_tree_list(&self) -> Option<UseTreeList> { support::child(&self.syntax) }
412 pub fn rename(&self) -> Option<Rename> { support::child(&self.syntax) }
414 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
415 pub struct UseTreeList {
416 pub(crate) syntax: SyntaxNode,
419 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
420 pub fn use_trees(&self) -> AstChildren<UseTree> { support::children(&self.syntax) }
421 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
423 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
425 pub(crate) syntax: SyntaxNode,
428 pub fn extern_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![extern]) }
430 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
431 pub struct GenericParamList {
432 pub(crate) syntax: SyntaxNode,
434 impl GenericParamList {
435 pub fn l_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![<]) }
436 pub fn generic_params(&self) -> AstChildren<GenericParam> { support::children(&self.syntax) }
437 pub fn r_angle_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![>]) }
439 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
440 pub struct WhereClause {
441 pub(crate) syntax: SyntaxNode,
444 pub fn where_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![where]) }
445 pub fn predicates(&self) -> AstChildren<WherePred> { support::children(&self.syntax) }
447 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
448 pub struct BlockExpr {
449 pub(crate) syntax: SyntaxNode,
451 impl ast::AttrsOwner for BlockExpr {}
453 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
454 pub fn statements(&self) -> AstChildren<Stmt> { support::children(&self.syntax) }
455 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
456 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
458 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
459 pub struct SelfParam {
460 pub(crate) syntax: SyntaxNode,
462 impl ast::AttrsOwner for SelfParam {}
464 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
465 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
466 support::token(&self.syntax, T![lifetime])
468 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
469 pub fn self_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![self]) }
470 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
471 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
473 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
475 pub(crate) syntax: SyntaxNode,
477 impl ast::AttrsOwner for Param {}
479 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
480 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
481 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
482 pub fn dotdotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![...]) }
484 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
485 pub struct RecordFieldList {
486 pub(crate) syntax: SyntaxNode,
488 impl RecordFieldList {
489 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
490 pub fn fields(&self) -> AstChildren<RecordField> { support::children(&self.syntax) }
491 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
493 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
494 pub struct TupleFieldList {
495 pub(crate) syntax: SyntaxNode,
497 impl TupleFieldList {
498 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
499 pub fn fields(&self) -> AstChildren<TupleField> { support::children(&self.syntax) }
500 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
502 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
503 pub struct RecordField {
504 pub(crate) syntax: SyntaxNode,
506 impl ast::AttrsOwner for RecordField {}
507 impl ast::NameOwner for RecordField {}
508 impl ast::VisibilityOwner for RecordField {}
510 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
511 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
513 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
514 pub struct TupleField {
515 pub(crate) syntax: SyntaxNode,
517 impl ast::AttrsOwner for TupleField {}
518 impl ast::VisibilityOwner for TupleField {}
520 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
522 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
523 pub struct VariantList {
524 pub(crate) syntax: SyntaxNode,
527 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
528 pub fn variants(&self) -> AstChildren<Variant> { support::children(&self.syntax) }
529 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
531 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
533 pub(crate) syntax: SyntaxNode,
535 impl ast::AttrsOwner for Variant {}
536 impl ast::NameOwner for Variant {}
537 impl ast::VisibilityOwner for Variant {}
539 pub fn field_list(&self) -> Option<FieldList> { support::child(&self.syntax) }
540 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
541 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
543 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
544 pub struct AssocItemList {
545 pub(crate) syntax: SyntaxNode,
547 impl ast::AttrsOwner for AssocItemList {}
549 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
550 pub fn assoc_items(&self) -> AstChildren<AssocItem> { support::children(&self.syntax) }
551 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
553 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
554 pub struct ExternItemList {
555 pub(crate) syntax: SyntaxNode,
557 impl ast::AttrsOwner for ExternItemList {}
558 impl ExternItemList {
559 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
560 pub fn extern_items(&self) -> AstChildren<ExternItem> { support::children(&self.syntax) }
561 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
563 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
564 pub struct ConstParam {
565 pub(crate) syntax: SyntaxNode,
567 impl ast::AttrsOwner for ConstParam {}
568 impl ast::NameOwner for ConstParam {}
570 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
571 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
572 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
573 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
574 pub fn default_val(&self) -> Option<Expr> { support::child(&self.syntax) }
576 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
577 pub struct LifetimeParam {
578 pub(crate) syntax: SyntaxNode,
580 impl ast::AttrsOwner for LifetimeParam {}
581 impl ast::TypeBoundsOwner for LifetimeParam {}
583 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
584 support::token(&self.syntax, T![lifetime])
587 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
588 pub struct TypeParam {
589 pub(crate) syntax: SyntaxNode,
591 impl ast::AttrsOwner for TypeParam {}
592 impl ast::NameOwner for TypeParam {}
593 impl ast::TypeBoundsOwner for TypeParam {}
595 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
596 pub fn default_type(&self) -> Option<Type> { support::child(&self.syntax) }
598 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
599 pub struct WherePred {
600 pub(crate) syntax: SyntaxNode,
602 impl ast::TypeBoundsOwner for WherePred {}
604 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
605 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }
606 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
607 support::token(&self.syntax, T![lifetime])
609 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
611 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
613 pub(crate) syntax: SyntaxNode,
615 impl ast::AttrsOwner for Literal {}
617 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
618 pub struct ExprStmt {
619 pub(crate) syntax: SyntaxNode,
621 impl ast::AttrsOwner for ExprStmt {}
623 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
624 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
626 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
628 pub(crate) syntax: SyntaxNode,
630 impl ast::AttrsOwner for LetStmt {}
632 pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }
633 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
634 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
635 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
636 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
637 pub fn initializer(&self) -> Option<Expr> { support::child(&self.syntax) }
638 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
640 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
641 pub struct ArrayExpr {
642 pub(crate) syntax: SyntaxNode,
644 impl ast::AttrsOwner for ArrayExpr {}
646 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
647 pub fn exprs(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
648 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
649 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
650 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
652 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
653 pub struct AwaitExpr {
654 pub(crate) syntax: SyntaxNode,
656 impl ast::AttrsOwner for AwaitExpr {}
658 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
659 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
660 pub fn await_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![await]) }
662 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
664 pub(crate) syntax: SyntaxNode,
666 impl ast::AttrsOwner for BinExpr {}
668 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
670 pub(crate) syntax: SyntaxNode,
672 impl ast::AttrsOwner for BoxExpr {}
674 pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }
675 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
677 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
678 pub struct BreakExpr {
679 pub(crate) syntax: SyntaxNode,
681 impl ast::AttrsOwner for BreakExpr {}
683 pub fn break_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![break]) }
684 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
685 support::token(&self.syntax, T![lifetime])
687 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
689 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
690 pub struct CallExpr {
691 pub(crate) syntax: SyntaxNode,
693 impl ast::AttrsOwner for CallExpr {}
694 impl ast::ArgListOwner for CallExpr {}
696 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
698 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
699 pub struct CastExpr {
700 pub(crate) syntax: SyntaxNode,
702 impl ast::AttrsOwner for CastExpr {}
704 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
705 pub fn as_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![as]) }
706 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
708 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
709 pub struct ClosureExpr {
710 pub(crate) syntax: SyntaxNode,
712 impl ast::AttrsOwner for ClosureExpr {}
714 pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
715 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
716 pub fn move_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![move]) }
717 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
718 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
719 pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
721 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
722 pub struct ContinueExpr {
723 pub(crate) syntax: SyntaxNode,
725 impl ast::AttrsOwner for ContinueExpr {}
727 pub fn continue_token(&self) -> Option<SyntaxToken> {
728 support::token(&self.syntax, T![continue])
730 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
731 support::token(&self.syntax, T![lifetime])
734 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
735 pub struct EffectExpr {
736 pub(crate) syntax: SyntaxNode,
738 impl ast::AttrsOwner for EffectExpr {}
740 pub fn label(&self) -> Option<Label> { support::child(&self.syntax) }
741 pub fn try_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![try]) }
742 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
743 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
744 pub fn block_expr(&self) -> Option<BlockExpr> { support::child(&self.syntax) }
746 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
747 pub struct FieldExpr {
748 pub(crate) syntax: SyntaxNode,
750 impl ast::AttrsOwner for FieldExpr {}
752 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
753 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
754 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
756 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
758 pub(crate) syntax: SyntaxNode,
760 impl ast::AttrsOwner for ForExpr {}
761 impl ast::LoopBodyOwner for ForExpr {}
763 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
764 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
765 pub fn in_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![in]) }
766 pub fn iterable(&self) -> Option<Expr> { support::child(&self.syntax) }
768 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
770 pub(crate) syntax: SyntaxNode,
772 impl ast::AttrsOwner for IfExpr {}
774 pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }
775 pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) }
776 pub fn else_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![else]) }
778 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
779 pub struct IndexExpr {
780 pub(crate) syntax: SyntaxNode,
782 impl ast::AttrsOwner for IndexExpr {}
784 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
785 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
787 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
788 pub struct LoopExpr {
789 pub(crate) syntax: SyntaxNode,
791 impl ast::AttrsOwner for LoopExpr {}
792 impl ast::LoopBodyOwner for LoopExpr {}
794 pub fn loop_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![loop]) }
796 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
797 pub struct MatchExpr {
798 pub(crate) syntax: SyntaxNode,
800 impl ast::AttrsOwner for MatchExpr {}
802 pub fn match_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![match]) }
803 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
804 pub fn match_arm_list(&self) -> Option<MatchArmList> { support::child(&self.syntax) }
806 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
807 pub struct MethodCallExpr {
808 pub(crate) syntax: SyntaxNode,
810 impl ast::AttrsOwner for MethodCallExpr {}
811 impl ast::ArgListOwner for MethodCallExpr {}
812 impl MethodCallExpr {
813 pub fn receiver(&self) -> Option<Expr> { support::child(&self.syntax) }
814 pub fn dot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![.]) }
815 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
816 pub fn generic_arg_list(&self) -> Option<GenericArgList> { support::child(&self.syntax) }
818 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
819 pub struct ParenExpr {
820 pub(crate) syntax: SyntaxNode,
822 impl ast::AttrsOwner for ParenExpr {}
824 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
825 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
826 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
828 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
829 pub struct PathExpr {
830 pub(crate) syntax: SyntaxNode,
832 impl ast::AttrsOwner for PathExpr {}
834 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
836 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
837 pub struct PrefixExpr {
838 pub(crate) syntax: SyntaxNode,
840 impl ast::AttrsOwner for PrefixExpr {}
842 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
844 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
845 pub struct RangeExpr {
846 pub(crate) syntax: SyntaxNode,
848 impl ast::AttrsOwner for RangeExpr {}
850 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
851 pub struct RecordExpr {
852 pub(crate) syntax: SyntaxNode,
855 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
856 pub fn record_expr_field_list(&self) -> Option<RecordExprFieldList> {
857 support::child(&self.syntax)
860 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
862 pub(crate) syntax: SyntaxNode,
864 impl ast::AttrsOwner for RefExpr {}
866 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
867 pub fn raw_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![raw]) }
868 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
869 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
870 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
872 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
873 pub struct ReturnExpr {
874 pub(crate) syntax: SyntaxNode,
876 impl ast::AttrsOwner for ReturnExpr {}
878 pub fn return_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![return]) }
879 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
881 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
883 pub(crate) syntax: SyntaxNode,
885 impl ast::AttrsOwner for TryExpr {}
887 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
888 pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }
890 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
891 pub struct TupleExpr {
892 pub(crate) syntax: SyntaxNode,
894 impl ast::AttrsOwner for TupleExpr {}
896 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
897 pub fn fields(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
898 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
900 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
901 pub struct WhileExpr {
902 pub(crate) syntax: SyntaxNode,
904 impl ast::AttrsOwner for WhileExpr {}
905 impl ast::LoopBodyOwner for WhileExpr {}
907 pub fn while_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![while]) }
908 pub fn condition(&self) -> Option<Condition> { support::child(&self.syntax) }
910 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
912 pub(crate) syntax: SyntaxNode,
915 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
916 support::token(&self.syntax, T![lifetime])
919 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
920 pub struct RecordExprFieldList {
921 pub(crate) syntax: SyntaxNode,
923 impl ast::AttrsOwner for RecordExprFieldList {}
924 impl RecordExprFieldList {
925 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
926 pub fn fields(&self) -> AstChildren<RecordExprField> { support::children(&self.syntax) }
927 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
928 pub fn spread(&self) -> Option<Expr> { support::child(&self.syntax) }
929 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
931 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
932 pub struct RecordExprField {
933 pub(crate) syntax: SyntaxNode,
935 impl ast::AttrsOwner for RecordExprField {}
936 impl RecordExprField {
937 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
938 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
939 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
941 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
943 pub(crate) syntax: SyntaxNode,
946 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
947 pub fn args(&self) -> AstChildren<Expr> { support::children(&self.syntax) }
948 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
950 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
951 pub struct Condition {
952 pub(crate) syntax: SyntaxNode,
955 pub fn let_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![let]) }
956 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
957 pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
958 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
960 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
961 pub struct MatchArmList {
962 pub(crate) syntax: SyntaxNode,
964 impl ast::AttrsOwner for MatchArmList {}
966 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
967 pub fn arms(&self) -> AstChildren<MatchArm> { support::children(&self.syntax) }
968 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
970 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
971 pub struct MatchArm {
972 pub(crate) syntax: SyntaxNode,
974 impl ast::AttrsOwner for MatchArm {}
976 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
977 pub fn guard(&self) -> Option<MatchGuard> { support::child(&self.syntax) }
978 pub fn fat_arrow_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=>]) }
979 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
980 pub fn comma_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![,]) }
982 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
983 pub struct MatchGuard {
984 pub(crate) syntax: SyntaxNode,
987 pub fn if_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![if]) }
988 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
990 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
991 pub struct ArrayType {
992 pub(crate) syntax: SyntaxNode,
995 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
996 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
997 pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
998 pub fn expr(&self) -> Option<Expr> { support::child(&self.syntax) }
999 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
1001 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1002 pub struct DynTraitType {
1003 pub(crate) syntax: SyntaxNode,
1006 pub fn dyn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![dyn]) }
1007 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) }
1009 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1010 pub struct FnPtrType {
1011 pub(crate) syntax: SyntaxNode,
1014 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
1015 pub fn async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
1016 pub fn unsafe_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![unsafe]) }
1017 pub fn abi(&self) -> Option<Abi> { support::child(&self.syntax) }
1018 pub fn fn_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![fn]) }
1019 pub fn param_list(&self) -> Option<ParamList> { support::child(&self.syntax) }
1020 pub fn ret_type(&self) -> Option<RetType> { support::child(&self.syntax) }
1022 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1023 pub struct ForType {
1024 pub(crate) syntax: SyntaxNode,
1027 pub fn for_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![for]) }
1028 pub fn generic_param_list(&self) -> Option<GenericParamList> { support::child(&self.syntax) }
1029 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1031 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1032 pub struct ImplTraitType {
1033 pub(crate) syntax: SyntaxNode,
1035 impl ImplTraitType {
1036 pub fn impl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![impl]) }
1037 pub fn type_bound_list(&self) -> Option<TypeBoundList> { support::child(&self.syntax) }
1039 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1040 pub struct InferType {
1041 pub(crate) syntax: SyntaxNode,
1044 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
1046 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1047 pub struct NeverType {
1048 pub(crate) syntax: SyntaxNode,
1051 pub fn excl_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![!]) }
1053 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1054 pub struct ParenType {
1055 pub(crate) syntax: SyntaxNode,
1058 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1059 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1060 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1062 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1063 pub struct PtrType {
1064 pub(crate) syntax: SyntaxNode,
1067 pub fn star_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![*]) }
1068 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
1069 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1070 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1072 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1073 pub struct RefType {
1074 pub(crate) syntax: SyntaxNode,
1077 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
1078 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
1079 support::token(&self.syntax, T![lifetime])
1081 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1082 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1084 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1085 pub struct SliceType {
1086 pub(crate) syntax: SyntaxNode,
1089 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
1090 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1091 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
1093 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1094 pub struct TupleType {
1095 pub(crate) syntax: SyntaxNode,
1098 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1099 pub fn fields(&self) -> AstChildren<Type> { support::children(&self.syntax) }
1100 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1102 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1103 pub struct TypeBound {
1104 pub(crate) syntax: SyntaxNode,
1107 pub fn lifetime_token(&self) -> Option<SyntaxToken> {
1108 support::token(&self.syntax, T![lifetime])
1110 pub fn question_mark_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![?]) }
1111 pub fn ty(&self) -> Option<Type> { support::child(&self.syntax) }
1113 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1114 pub struct IdentPat {
1115 pub(crate) syntax: SyntaxNode,
1117 impl ast::AttrsOwner for IdentPat {}
1118 impl ast::NameOwner for IdentPat {}
1120 pub fn ref_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![ref]) }
1121 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1122 pub fn at_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![@]) }
1123 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1125 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1127 pub(crate) syntax: SyntaxNode,
1130 pub fn box_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![box]) }
1131 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1133 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1134 pub struct RestPat {
1135 pub(crate) syntax: SyntaxNode,
1138 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
1140 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1141 pub struct LiteralPat {
1142 pub(crate) syntax: SyntaxNode,
1145 pub fn literal(&self) -> Option<Literal> { support::child(&self.syntax) }
1147 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1148 pub struct MacroPat {
1149 pub(crate) syntax: SyntaxNode,
1152 pub fn macro_call(&self) -> Option<MacroCall> { support::child(&self.syntax) }
1154 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1156 pub(crate) syntax: SyntaxNode,
1159 pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1161 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1162 pub struct ParenPat {
1163 pub(crate) syntax: SyntaxNode,
1166 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1167 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1168 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1170 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1171 pub struct PathPat {
1172 pub(crate) syntax: SyntaxNode,
1175 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
1177 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1178 pub struct WildcardPat {
1179 pub(crate) syntax: SyntaxNode,
1182 pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
1184 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1185 pub struct RangePat {
1186 pub(crate) syntax: SyntaxNode,
1189 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1190 pub struct RecordPat {
1191 pub(crate) syntax: SyntaxNode,
1194 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
1195 pub fn record_pat_field_list(&self) -> Option<RecordPatFieldList> {
1196 support::child(&self.syntax)
1199 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1201 pub(crate) syntax: SyntaxNode,
1204 pub fn amp_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![&]) }
1205 pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
1206 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1208 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1209 pub struct SlicePat {
1210 pub(crate) syntax: SyntaxNode,
1213 pub fn l_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['[']) }
1214 pub fn pats(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1215 pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
1217 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1218 pub struct TuplePat {
1219 pub(crate) syntax: SyntaxNode,
1222 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1223 pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1224 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1226 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1227 pub struct TupleStructPat {
1228 pub(crate) syntax: SyntaxNode,
1230 impl TupleStructPat {
1231 pub fn path(&self) -> Option<Path> { support::child(&self.syntax) }
1232 pub fn l_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['(']) }
1233 pub fn fields(&self) -> AstChildren<Pat> { support::children(&self.syntax) }
1234 pub fn r_paren_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![')']) }
1236 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1237 pub struct RecordPatFieldList {
1238 pub(crate) syntax: SyntaxNode,
1240 impl RecordPatFieldList {
1241 pub fn l_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['{']) }
1242 pub fn fields(&self) -> AstChildren<RecordPatField> { support::children(&self.syntax) }
1243 pub fn dotdot_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![..]) }
1244 pub fn r_curly_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T!['}']) }
1246 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1247 pub struct RecordPatField {
1248 pub(crate) syntax: SyntaxNode,
1250 impl ast::AttrsOwner for RecordPatField {}
1251 impl RecordPatField {
1252 pub fn name_ref(&self) -> Option<NameRef> { support::child(&self.syntax) }
1253 pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
1254 pub fn pat(&self) -> Option<Pat> { support::child(&self.syntax) }
1256 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1257 pub enum GenericArg {
1259 AssocTypeArg(AssocTypeArg),
1260 LifetimeArg(LifetimeArg),
1263 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1265 ArrayType(ArrayType),
1266 DynTraitType(DynTraitType),
1267 FnPtrType(FnPtrType),
1269 ImplTraitType(ImplTraitType),
1270 InferType(InferType),
1271 NeverType(NeverType),
1272 ParenType(ParenType),
1276 SliceType(SliceType),
1277 TupleType(TupleType),
1279 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1281 ArrayExpr(ArrayExpr),
1282 AwaitExpr(AwaitExpr),
1284 BlockExpr(BlockExpr),
1286 BreakExpr(BreakExpr),
1289 ClosureExpr(ClosureExpr),
1290 ContinueExpr(ContinueExpr),
1291 EffectExpr(EffectExpr),
1292 FieldExpr(FieldExpr),
1295 IndexExpr(IndexExpr),
1298 MacroCall(MacroCall),
1299 MatchExpr(MatchExpr),
1300 MethodCallExpr(MethodCallExpr),
1301 ParenExpr(ParenExpr),
1303 PrefixExpr(PrefixExpr),
1304 RangeExpr(RangeExpr),
1305 RecordExpr(RecordExpr),
1307 ReturnExpr(ReturnExpr),
1309 TupleExpr(TupleExpr),
1310 WhileExpr(WhileExpr),
1312 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1316 ExternBlock(ExternBlock),
1317 ExternCrate(ExternCrate),
1320 MacroCall(MacroCall),
1325 TypeAlias(TypeAlias),
1329 impl ast::AttrsOwner for Item {}
1330 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1336 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1341 LiteralPat(LiteralPat),
1346 WildcardPat(WildcardPat),
1348 RecordPat(RecordPat),
1352 TupleStructPat(TupleStructPat),
1354 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1355 pub enum FieldList {
1356 RecordFieldList(RecordFieldList),
1357 TupleFieldList(TupleFieldList),
1359 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1365 impl ast::AttrsOwner for AdtDef {}
1366 impl ast::GenericParamsOwner for AdtDef {}
1367 impl ast::NameOwner for AdtDef {}
1368 impl ast::VisibilityOwner for AdtDef {}
1369 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1370 pub enum AssocItem {
1373 MacroCall(MacroCall),
1374 TypeAlias(TypeAlias),
1376 impl ast::AttrsOwner for AssocItem {}
1377 impl ast::NameOwner for AssocItem {}
1378 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1379 pub enum ExternItem {
1381 MacroCall(MacroCall),
1383 TypeAlias(TypeAlias),
1385 impl ast::AttrsOwner for ExternItem {}
1386 impl ast::NameOwner for ExternItem {}
1387 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1388 pub enum GenericParam {
1389 ConstParam(ConstParam),
1390 LifetimeParam(LifetimeParam),
1391 TypeParam(TypeParam),
1393 impl ast::AttrsOwner for GenericParam {}
1394 impl AstNode for Name {
1395 fn can_cast(kind: SyntaxKind) -> bool { kind == NAME }
1396 fn cast(syntax: SyntaxNode) -> Option<Self> {
1397 if Self::can_cast(syntax.kind()) {
1398 Some(Self { syntax })
1403 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1405 impl AstNode for NameRef {
1406 fn can_cast(kind: SyntaxKind) -> bool { kind == NAME_REF }
1407 fn cast(syntax: SyntaxNode) -> Option<Self> {
1408 if Self::can_cast(syntax.kind()) {
1409 Some(Self { syntax })
1414 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1416 impl AstNode for Path {
1417 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH }
1418 fn cast(syntax: SyntaxNode) -> Option<Self> {
1419 if Self::can_cast(syntax.kind()) {
1420 Some(Self { syntax })
1425 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1427 impl AstNode for PathSegment {
1428 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT }
1429 fn cast(syntax: SyntaxNode) -> Option<Self> {
1430 if Self::can_cast(syntax.kind()) {
1431 Some(Self { syntax })
1436 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1438 impl AstNode for GenericArgList {
1439 fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_ARG_LIST }
1440 fn cast(syntax: SyntaxNode) -> Option<Self> {
1441 if Self::can_cast(syntax.kind()) {
1442 Some(Self { syntax })
1447 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1449 impl AstNode for ParamList {
1450 fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST }
1451 fn cast(syntax: SyntaxNode) -> Option<Self> {
1452 if Self::can_cast(syntax.kind()) {
1453 Some(Self { syntax })
1458 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1460 impl AstNode for RetType {
1461 fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE }
1462 fn cast(syntax: SyntaxNode) -> Option<Self> {
1463 if Self::can_cast(syntax.kind()) {
1464 Some(Self { syntax })
1469 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1471 impl AstNode for PathType {
1472 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_TYPE }
1473 fn cast(syntax: SyntaxNode) -> Option<Self> {
1474 if Self::can_cast(syntax.kind()) {
1475 Some(Self { syntax })
1480 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1482 impl AstNode for TypeArg {
1483 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ARG }
1484 fn cast(syntax: SyntaxNode) -> Option<Self> {
1485 if Self::can_cast(syntax.kind()) {
1486 Some(Self { syntax })
1491 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1493 impl AstNode for AssocTypeArg {
1494 fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_TYPE_ARG }
1495 fn cast(syntax: SyntaxNode) -> Option<Self> {
1496 if Self::can_cast(syntax.kind()) {
1497 Some(Self { syntax })
1502 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1504 impl AstNode for LifetimeArg {
1505 fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_ARG }
1506 fn cast(syntax: SyntaxNode) -> Option<Self> {
1507 if Self::can_cast(syntax.kind()) {
1508 Some(Self { syntax })
1513 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1515 impl AstNode for ConstArg {
1516 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_ARG }
1517 fn cast(syntax: SyntaxNode) -> Option<Self> {
1518 if Self::can_cast(syntax.kind()) {
1519 Some(Self { syntax })
1524 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1526 impl AstNode for TypeBoundList {
1527 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST }
1528 fn cast(syntax: SyntaxNode) -> Option<Self> {
1529 if Self::can_cast(syntax.kind()) {
1530 Some(Self { syntax })
1535 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1537 impl AstNode for MacroCall {
1538 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL }
1539 fn cast(syntax: SyntaxNode) -> Option<Self> {
1540 if Self::can_cast(syntax.kind()) {
1541 Some(Self { syntax })
1546 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1548 impl AstNode for Attr {
1549 fn can_cast(kind: SyntaxKind) -> bool { kind == ATTR }
1550 fn cast(syntax: SyntaxNode) -> Option<Self> {
1551 if Self::can_cast(syntax.kind()) {
1552 Some(Self { syntax })
1557 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1559 impl AstNode for TokenTree {
1560 fn can_cast(kind: SyntaxKind) -> bool { kind == TOKEN_TREE }
1561 fn cast(syntax: SyntaxNode) -> Option<Self> {
1562 if Self::can_cast(syntax.kind()) {
1563 Some(Self { syntax })
1568 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1570 impl AstNode for MacroItems {
1571 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_ITEMS }
1572 fn cast(syntax: SyntaxNode) -> Option<Self> {
1573 if Self::can_cast(syntax.kind()) {
1574 Some(Self { syntax })
1579 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1581 impl AstNode for MacroStmts {
1582 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_STMTS }
1583 fn cast(syntax: SyntaxNode) -> Option<Self> {
1584 if Self::can_cast(syntax.kind()) {
1585 Some(Self { syntax })
1590 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1592 impl AstNode for SourceFile {
1593 fn can_cast(kind: SyntaxKind) -> bool { kind == SOURCE_FILE }
1594 fn cast(syntax: SyntaxNode) -> Option<Self> {
1595 if Self::can_cast(syntax.kind()) {
1596 Some(Self { syntax })
1601 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1603 impl AstNode for Const {
1604 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST }
1605 fn cast(syntax: SyntaxNode) -> Option<Self> {
1606 if Self::can_cast(syntax.kind()) {
1607 Some(Self { syntax })
1612 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1614 impl AstNode for Enum {
1615 fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM }
1616 fn cast(syntax: SyntaxNode) -> Option<Self> {
1617 if Self::can_cast(syntax.kind()) {
1618 Some(Self { syntax })
1623 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1625 impl AstNode for ExternBlock {
1626 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK }
1627 fn cast(syntax: SyntaxNode) -> Option<Self> {
1628 if Self::can_cast(syntax.kind()) {
1629 Some(Self { syntax })
1634 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1636 impl AstNode for ExternCrate {
1637 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE }
1638 fn cast(syntax: SyntaxNode) -> Option<Self> {
1639 if Self::can_cast(syntax.kind()) {
1640 Some(Self { syntax })
1645 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1647 impl AstNode for Fn {
1648 fn can_cast(kind: SyntaxKind) -> bool { kind == FN }
1649 fn cast(syntax: SyntaxNode) -> Option<Self> {
1650 if Self::can_cast(syntax.kind()) {
1651 Some(Self { syntax })
1656 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1658 impl AstNode for Impl {
1659 fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL }
1660 fn cast(syntax: SyntaxNode) -> Option<Self> {
1661 if Self::can_cast(syntax.kind()) {
1662 Some(Self { syntax })
1667 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1669 impl AstNode for Module {
1670 fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE }
1671 fn cast(syntax: SyntaxNode) -> Option<Self> {
1672 if Self::can_cast(syntax.kind()) {
1673 Some(Self { syntax })
1678 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1680 impl AstNode for Static {
1681 fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC }
1682 fn cast(syntax: SyntaxNode) -> Option<Self> {
1683 if Self::can_cast(syntax.kind()) {
1684 Some(Self { syntax })
1689 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1691 impl AstNode for Struct {
1692 fn can_cast(kind: SyntaxKind) -> bool { kind == STRUCT }
1693 fn cast(syntax: SyntaxNode) -> Option<Self> {
1694 if Self::can_cast(syntax.kind()) {
1695 Some(Self { syntax })
1700 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1702 impl AstNode for Trait {
1703 fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT }
1704 fn cast(syntax: SyntaxNode) -> Option<Self> {
1705 if Self::can_cast(syntax.kind()) {
1706 Some(Self { syntax })
1711 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1713 impl AstNode for TypeAlias {
1714 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS }
1715 fn cast(syntax: SyntaxNode) -> Option<Self> {
1716 if Self::can_cast(syntax.kind()) {
1717 Some(Self { syntax })
1722 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1724 impl AstNode for Union {
1725 fn can_cast(kind: SyntaxKind) -> bool { kind == UNION }
1726 fn cast(syntax: SyntaxNode) -> Option<Self> {
1727 if Self::can_cast(syntax.kind()) {
1728 Some(Self { syntax })
1733 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1735 impl AstNode for Use {
1736 fn can_cast(kind: SyntaxKind) -> bool { kind == USE }
1737 fn cast(syntax: SyntaxNode) -> Option<Self> {
1738 if Self::can_cast(syntax.kind()) {
1739 Some(Self { syntax })
1744 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1746 impl AstNode for Visibility {
1747 fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY }
1748 fn cast(syntax: SyntaxNode) -> Option<Self> {
1749 if Self::can_cast(syntax.kind()) {
1750 Some(Self { syntax })
1755 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1757 impl AstNode for ItemList {
1758 fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST }
1759 fn cast(syntax: SyntaxNode) -> Option<Self> {
1760 if Self::can_cast(syntax.kind()) {
1761 Some(Self { syntax })
1766 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1768 impl AstNode for Rename {
1769 fn can_cast(kind: SyntaxKind) -> bool { kind == RENAME }
1770 fn cast(syntax: SyntaxNode) -> Option<Self> {
1771 if Self::can_cast(syntax.kind()) {
1772 Some(Self { syntax })
1777 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1779 impl AstNode for UseTree {
1780 fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE }
1781 fn cast(syntax: SyntaxNode) -> Option<Self> {
1782 if Self::can_cast(syntax.kind()) {
1783 Some(Self { syntax })
1788 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1790 impl AstNode for UseTreeList {
1791 fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE_LIST }
1792 fn cast(syntax: SyntaxNode) -> Option<Self> {
1793 if Self::can_cast(syntax.kind()) {
1794 Some(Self { syntax })
1799 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1801 impl AstNode for Abi {
1802 fn can_cast(kind: SyntaxKind) -> bool { kind == ABI }
1803 fn cast(syntax: SyntaxNode) -> Option<Self> {
1804 if Self::can_cast(syntax.kind()) {
1805 Some(Self { syntax })
1810 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1812 impl AstNode for GenericParamList {
1813 fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_PARAM_LIST }
1814 fn cast(syntax: SyntaxNode) -> Option<Self> {
1815 if Self::can_cast(syntax.kind()) {
1816 Some(Self { syntax })
1821 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1823 impl AstNode for WhereClause {
1824 fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE }
1825 fn cast(syntax: SyntaxNode) -> Option<Self> {
1826 if Self::can_cast(syntax.kind()) {
1827 Some(Self { syntax })
1832 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1834 impl AstNode for BlockExpr {
1835 fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR }
1836 fn cast(syntax: SyntaxNode) -> Option<Self> {
1837 if Self::can_cast(syntax.kind()) {
1838 Some(Self { syntax })
1843 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1845 impl AstNode for SelfParam {
1846 fn can_cast(kind: SyntaxKind) -> bool { kind == SELF_PARAM }
1847 fn cast(syntax: SyntaxNode) -> Option<Self> {
1848 if Self::can_cast(syntax.kind()) {
1849 Some(Self { syntax })
1854 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1856 impl AstNode for Param {
1857 fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM }
1858 fn cast(syntax: SyntaxNode) -> Option<Self> {
1859 if Self::can_cast(syntax.kind()) {
1860 Some(Self { syntax })
1865 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1867 impl AstNode for RecordFieldList {
1868 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_LIST }
1869 fn cast(syntax: SyntaxNode) -> Option<Self> {
1870 if Self::can_cast(syntax.kind()) {
1871 Some(Self { syntax })
1876 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1878 impl AstNode for TupleFieldList {
1879 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_LIST }
1880 fn cast(syntax: SyntaxNode) -> Option<Self> {
1881 if Self::can_cast(syntax.kind()) {
1882 Some(Self { syntax })
1887 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1889 impl AstNode for RecordField {
1890 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD }
1891 fn cast(syntax: SyntaxNode) -> Option<Self> {
1892 if Self::can_cast(syntax.kind()) {
1893 Some(Self { syntax })
1898 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1900 impl AstNode for TupleField {
1901 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD }
1902 fn cast(syntax: SyntaxNode) -> Option<Self> {
1903 if Self::can_cast(syntax.kind()) {
1904 Some(Self { syntax })
1909 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1911 impl AstNode for VariantList {
1912 fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT_LIST }
1913 fn cast(syntax: SyntaxNode) -> Option<Self> {
1914 if Self::can_cast(syntax.kind()) {
1915 Some(Self { syntax })
1920 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1922 impl AstNode for Variant {
1923 fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT }
1924 fn cast(syntax: SyntaxNode) -> Option<Self> {
1925 if Self::can_cast(syntax.kind()) {
1926 Some(Self { syntax })
1931 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1933 impl AstNode for AssocItemList {
1934 fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_ITEM_LIST }
1935 fn cast(syntax: SyntaxNode) -> Option<Self> {
1936 if Self::can_cast(syntax.kind()) {
1937 Some(Self { syntax })
1942 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1944 impl AstNode for ExternItemList {
1945 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST }
1946 fn cast(syntax: SyntaxNode) -> Option<Self> {
1947 if Self::can_cast(syntax.kind()) {
1948 Some(Self { syntax })
1953 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1955 impl AstNode for ConstParam {
1956 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_PARAM }
1957 fn cast(syntax: SyntaxNode) -> Option<Self> {
1958 if Self::can_cast(syntax.kind()) {
1959 Some(Self { syntax })
1964 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1966 impl AstNode for LifetimeParam {
1967 fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_PARAM }
1968 fn cast(syntax: SyntaxNode) -> Option<Self> {
1969 if Self::can_cast(syntax.kind()) {
1970 Some(Self { syntax })
1975 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1977 impl AstNode for TypeParam {
1978 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM }
1979 fn cast(syntax: SyntaxNode) -> Option<Self> {
1980 if Self::can_cast(syntax.kind()) {
1981 Some(Self { syntax })
1986 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1988 impl AstNode for WherePred {
1989 fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_PRED }
1990 fn cast(syntax: SyntaxNode) -> Option<Self> {
1991 if Self::can_cast(syntax.kind()) {
1992 Some(Self { syntax })
1997 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1999 impl AstNode for Literal {
2000 fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL }
2001 fn cast(syntax: SyntaxNode) -> Option<Self> {
2002 if Self::can_cast(syntax.kind()) {
2003 Some(Self { syntax })
2008 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2010 impl AstNode for ExprStmt {
2011 fn can_cast(kind: SyntaxKind) -> bool { kind == EXPR_STMT }
2012 fn cast(syntax: SyntaxNode) -> Option<Self> {
2013 if Self::can_cast(syntax.kind()) {
2014 Some(Self { syntax })
2019 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2021 impl AstNode for LetStmt {
2022 fn can_cast(kind: SyntaxKind) -> bool { kind == LET_STMT }
2023 fn cast(syntax: SyntaxNode) -> Option<Self> {
2024 if Self::can_cast(syntax.kind()) {
2025 Some(Self { syntax })
2030 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2032 impl AstNode for ArrayExpr {
2033 fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_EXPR }
2034 fn cast(syntax: SyntaxNode) -> Option<Self> {
2035 if Self::can_cast(syntax.kind()) {
2036 Some(Self { syntax })
2041 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2043 impl AstNode for AwaitExpr {
2044 fn can_cast(kind: SyntaxKind) -> bool { kind == AWAIT_EXPR }
2045 fn cast(syntax: SyntaxNode) -> Option<Self> {
2046 if Self::can_cast(syntax.kind()) {
2047 Some(Self { syntax })
2052 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2054 impl AstNode for BinExpr {
2055 fn can_cast(kind: SyntaxKind) -> bool { kind == BIN_EXPR }
2056 fn cast(syntax: SyntaxNode) -> Option<Self> {
2057 if Self::can_cast(syntax.kind()) {
2058 Some(Self { syntax })
2063 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2065 impl AstNode for BoxExpr {
2066 fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_EXPR }
2067 fn cast(syntax: SyntaxNode) -> Option<Self> {
2068 if Self::can_cast(syntax.kind()) {
2069 Some(Self { syntax })
2074 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2076 impl AstNode for BreakExpr {
2077 fn can_cast(kind: SyntaxKind) -> bool { kind == BREAK_EXPR }
2078 fn cast(syntax: SyntaxNode) -> Option<Self> {
2079 if Self::can_cast(syntax.kind()) {
2080 Some(Self { syntax })
2085 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2087 impl AstNode for CallExpr {
2088 fn can_cast(kind: SyntaxKind) -> bool { kind == CALL_EXPR }
2089 fn cast(syntax: SyntaxNode) -> Option<Self> {
2090 if Self::can_cast(syntax.kind()) {
2091 Some(Self { syntax })
2096 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2098 impl AstNode for CastExpr {
2099 fn can_cast(kind: SyntaxKind) -> bool { kind == CAST_EXPR }
2100 fn cast(syntax: SyntaxNode) -> Option<Self> {
2101 if Self::can_cast(syntax.kind()) {
2102 Some(Self { syntax })
2107 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2109 impl AstNode for ClosureExpr {
2110 fn can_cast(kind: SyntaxKind) -> bool { kind == CLOSURE_EXPR }
2111 fn cast(syntax: SyntaxNode) -> Option<Self> {
2112 if Self::can_cast(syntax.kind()) {
2113 Some(Self { syntax })
2118 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2120 impl AstNode for ContinueExpr {
2121 fn can_cast(kind: SyntaxKind) -> bool { kind == CONTINUE_EXPR }
2122 fn cast(syntax: SyntaxNode) -> Option<Self> {
2123 if Self::can_cast(syntax.kind()) {
2124 Some(Self { syntax })
2129 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2131 impl AstNode for EffectExpr {
2132 fn can_cast(kind: SyntaxKind) -> bool { kind == EFFECT_EXPR }
2133 fn cast(syntax: SyntaxNode) -> Option<Self> {
2134 if Self::can_cast(syntax.kind()) {
2135 Some(Self { syntax })
2140 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2142 impl AstNode for FieldExpr {
2143 fn can_cast(kind: SyntaxKind) -> bool { kind == FIELD_EXPR }
2144 fn cast(syntax: SyntaxNode) -> Option<Self> {
2145 if Self::can_cast(syntax.kind()) {
2146 Some(Self { syntax })
2151 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2153 impl AstNode for ForExpr {
2154 fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_EXPR }
2155 fn cast(syntax: SyntaxNode) -> Option<Self> {
2156 if Self::can_cast(syntax.kind()) {
2157 Some(Self { syntax })
2162 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2164 impl AstNode for IfExpr {
2165 fn can_cast(kind: SyntaxKind) -> bool { kind == IF_EXPR }
2166 fn cast(syntax: SyntaxNode) -> Option<Self> {
2167 if Self::can_cast(syntax.kind()) {
2168 Some(Self { syntax })
2173 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2175 impl AstNode for IndexExpr {
2176 fn can_cast(kind: SyntaxKind) -> bool { kind == INDEX_EXPR }
2177 fn cast(syntax: SyntaxNode) -> Option<Self> {
2178 if Self::can_cast(syntax.kind()) {
2179 Some(Self { syntax })
2184 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2186 impl AstNode for LoopExpr {
2187 fn can_cast(kind: SyntaxKind) -> bool { kind == LOOP_EXPR }
2188 fn cast(syntax: SyntaxNode) -> Option<Self> {
2189 if Self::can_cast(syntax.kind()) {
2190 Some(Self { syntax })
2195 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2197 impl AstNode for MatchExpr {
2198 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_EXPR }
2199 fn cast(syntax: SyntaxNode) -> Option<Self> {
2200 if Self::can_cast(syntax.kind()) {
2201 Some(Self { syntax })
2206 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2208 impl AstNode for MethodCallExpr {
2209 fn can_cast(kind: SyntaxKind) -> bool { kind == METHOD_CALL_EXPR }
2210 fn cast(syntax: SyntaxNode) -> Option<Self> {
2211 if Self::can_cast(syntax.kind()) {
2212 Some(Self { syntax })
2217 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2219 impl AstNode for ParenExpr {
2220 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_EXPR }
2221 fn cast(syntax: SyntaxNode) -> Option<Self> {
2222 if Self::can_cast(syntax.kind()) {
2223 Some(Self { syntax })
2228 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2230 impl AstNode for PathExpr {
2231 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_EXPR }
2232 fn cast(syntax: SyntaxNode) -> Option<Self> {
2233 if Self::can_cast(syntax.kind()) {
2234 Some(Self { syntax })
2239 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2241 impl AstNode for PrefixExpr {
2242 fn can_cast(kind: SyntaxKind) -> bool { kind == PREFIX_EXPR }
2243 fn cast(syntax: SyntaxNode) -> Option<Self> {
2244 if Self::can_cast(syntax.kind()) {
2245 Some(Self { syntax })
2250 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2252 impl AstNode for RangeExpr {
2253 fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_EXPR }
2254 fn cast(syntax: SyntaxNode) -> Option<Self> {
2255 if Self::can_cast(syntax.kind()) {
2256 Some(Self { syntax })
2261 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2263 impl AstNode for RecordExpr {
2264 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR }
2265 fn cast(syntax: SyntaxNode) -> Option<Self> {
2266 if Self::can_cast(syntax.kind()) {
2267 Some(Self { syntax })
2272 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2274 impl AstNode for RefExpr {
2275 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_EXPR }
2276 fn cast(syntax: SyntaxNode) -> Option<Self> {
2277 if Self::can_cast(syntax.kind()) {
2278 Some(Self { syntax })
2283 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2285 impl AstNode for ReturnExpr {
2286 fn can_cast(kind: SyntaxKind) -> bool { kind == RETURN_EXPR }
2287 fn cast(syntax: SyntaxNode) -> Option<Self> {
2288 if Self::can_cast(syntax.kind()) {
2289 Some(Self { syntax })
2294 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2296 impl AstNode for TryExpr {
2297 fn can_cast(kind: SyntaxKind) -> bool { kind == TRY_EXPR }
2298 fn cast(syntax: SyntaxNode) -> Option<Self> {
2299 if Self::can_cast(syntax.kind()) {
2300 Some(Self { syntax })
2305 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2307 impl AstNode for TupleExpr {
2308 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_EXPR }
2309 fn cast(syntax: SyntaxNode) -> Option<Self> {
2310 if Self::can_cast(syntax.kind()) {
2311 Some(Self { syntax })
2316 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2318 impl AstNode for WhileExpr {
2319 fn can_cast(kind: SyntaxKind) -> bool { kind == WHILE_EXPR }
2320 fn cast(syntax: SyntaxNode) -> Option<Self> {
2321 if Self::can_cast(syntax.kind()) {
2322 Some(Self { syntax })
2327 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2329 impl AstNode for Label {
2330 fn can_cast(kind: SyntaxKind) -> bool { kind == LABEL }
2331 fn cast(syntax: SyntaxNode) -> Option<Self> {
2332 if Self::can_cast(syntax.kind()) {
2333 Some(Self { syntax })
2338 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2340 impl AstNode for RecordExprFieldList {
2341 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD_LIST }
2342 fn cast(syntax: SyntaxNode) -> Option<Self> {
2343 if Self::can_cast(syntax.kind()) {
2344 Some(Self { syntax })
2349 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2351 impl AstNode for RecordExprField {
2352 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD }
2353 fn cast(syntax: SyntaxNode) -> Option<Self> {
2354 if Self::can_cast(syntax.kind()) {
2355 Some(Self { syntax })
2360 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2362 impl AstNode for ArgList {
2363 fn can_cast(kind: SyntaxKind) -> bool { kind == ARG_LIST }
2364 fn cast(syntax: SyntaxNode) -> Option<Self> {
2365 if Self::can_cast(syntax.kind()) {
2366 Some(Self { syntax })
2371 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2373 impl AstNode for Condition {
2374 fn can_cast(kind: SyntaxKind) -> bool { kind == CONDITION }
2375 fn cast(syntax: SyntaxNode) -> Option<Self> {
2376 if Self::can_cast(syntax.kind()) {
2377 Some(Self { syntax })
2382 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2384 impl AstNode for MatchArmList {
2385 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM_LIST }
2386 fn cast(syntax: SyntaxNode) -> Option<Self> {
2387 if Self::can_cast(syntax.kind()) {
2388 Some(Self { syntax })
2393 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2395 impl AstNode for MatchArm {
2396 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM }
2397 fn cast(syntax: SyntaxNode) -> Option<Self> {
2398 if Self::can_cast(syntax.kind()) {
2399 Some(Self { syntax })
2404 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2406 impl AstNode for MatchGuard {
2407 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_GUARD }
2408 fn cast(syntax: SyntaxNode) -> Option<Self> {
2409 if Self::can_cast(syntax.kind()) {
2410 Some(Self { syntax })
2415 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2417 impl AstNode for ArrayType {
2418 fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_TYPE }
2419 fn cast(syntax: SyntaxNode) -> Option<Self> {
2420 if Self::can_cast(syntax.kind()) {
2421 Some(Self { syntax })
2426 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2428 impl AstNode for DynTraitType {
2429 fn can_cast(kind: SyntaxKind) -> bool { kind == DYN_TRAIT_TYPE }
2430 fn cast(syntax: SyntaxNode) -> Option<Self> {
2431 if Self::can_cast(syntax.kind()) {
2432 Some(Self { syntax })
2437 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2439 impl AstNode for FnPtrType {
2440 fn can_cast(kind: SyntaxKind) -> bool { kind == FN_PTR_TYPE }
2441 fn cast(syntax: SyntaxNode) -> Option<Self> {
2442 if Self::can_cast(syntax.kind()) {
2443 Some(Self { syntax })
2448 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2450 impl AstNode for ForType {
2451 fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_TYPE }
2452 fn cast(syntax: SyntaxNode) -> Option<Self> {
2453 if Self::can_cast(syntax.kind()) {
2454 Some(Self { syntax })
2459 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2461 impl AstNode for ImplTraitType {
2462 fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_TRAIT_TYPE }
2463 fn cast(syntax: SyntaxNode) -> Option<Self> {
2464 if Self::can_cast(syntax.kind()) {
2465 Some(Self { syntax })
2470 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2472 impl AstNode for InferType {
2473 fn can_cast(kind: SyntaxKind) -> bool { kind == INFER_TYPE }
2474 fn cast(syntax: SyntaxNode) -> Option<Self> {
2475 if Self::can_cast(syntax.kind()) {
2476 Some(Self { syntax })
2481 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2483 impl AstNode for NeverType {
2484 fn can_cast(kind: SyntaxKind) -> bool { kind == NEVER_TYPE }
2485 fn cast(syntax: SyntaxNode) -> Option<Self> {
2486 if Self::can_cast(syntax.kind()) {
2487 Some(Self { syntax })
2492 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2494 impl AstNode for ParenType {
2495 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_TYPE }
2496 fn cast(syntax: SyntaxNode) -> Option<Self> {
2497 if Self::can_cast(syntax.kind()) {
2498 Some(Self { syntax })
2503 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2505 impl AstNode for PtrType {
2506 fn can_cast(kind: SyntaxKind) -> bool { kind == PTR_TYPE }
2507 fn cast(syntax: SyntaxNode) -> Option<Self> {
2508 if Self::can_cast(syntax.kind()) {
2509 Some(Self { syntax })
2514 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2516 impl AstNode for RefType {
2517 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_TYPE }
2518 fn cast(syntax: SyntaxNode) -> Option<Self> {
2519 if Self::can_cast(syntax.kind()) {
2520 Some(Self { syntax })
2525 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2527 impl AstNode for SliceType {
2528 fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_TYPE }
2529 fn cast(syntax: SyntaxNode) -> Option<Self> {
2530 if Self::can_cast(syntax.kind()) {
2531 Some(Self { syntax })
2536 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2538 impl AstNode for TupleType {
2539 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_TYPE }
2540 fn cast(syntax: SyntaxNode) -> Option<Self> {
2541 if Self::can_cast(syntax.kind()) {
2542 Some(Self { syntax })
2547 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2549 impl AstNode for TypeBound {
2550 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND }
2551 fn cast(syntax: SyntaxNode) -> Option<Self> {
2552 if Self::can_cast(syntax.kind()) {
2553 Some(Self { syntax })
2558 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2560 impl AstNode for IdentPat {
2561 fn can_cast(kind: SyntaxKind) -> bool { kind == IDENT_PAT }
2562 fn cast(syntax: SyntaxNode) -> Option<Self> {
2563 if Self::can_cast(syntax.kind()) {
2564 Some(Self { syntax })
2569 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2571 impl AstNode for BoxPat {
2572 fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_PAT }
2573 fn cast(syntax: SyntaxNode) -> Option<Self> {
2574 if Self::can_cast(syntax.kind()) {
2575 Some(Self { syntax })
2580 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2582 impl AstNode for RestPat {
2583 fn can_cast(kind: SyntaxKind) -> bool { kind == REST_PAT }
2584 fn cast(syntax: SyntaxNode) -> Option<Self> {
2585 if Self::can_cast(syntax.kind()) {
2586 Some(Self { syntax })
2591 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2593 impl AstNode for LiteralPat {
2594 fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL_PAT }
2595 fn cast(syntax: SyntaxNode) -> Option<Self> {
2596 if Self::can_cast(syntax.kind()) {
2597 Some(Self { syntax })
2602 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2604 impl AstNode for MacroPat {
2605 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_PAT }
2606 fn cast(syntax: SyntaxNode) -> Option<Self> {
2607 if Self::can_cast(syntax.kind()) {
2608 Some(Self { syntax })
2613 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2615 impl AstNode for OrPat {
2616 fn can_cast(kind: SyntaxKind) -> bool { kind == OR_PAT }
2617 fn cast(syntax: SyntaxNode) -> Option<Self> {
2618 if Self::can_cast(syntax.kind()) {
2619 Some(Self { syntax })
2624 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2626 impl AstNode for ParenPat {
2627 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_PAT }
2628 fn cast(syntax: SyntaxNode) -> Option<Self> {
2629 if Self::can_cast(syntax.kind()) {
2630 Some(Self { syntax })
2635 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2637 impl AstNode for PathPat {
2638 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_PAT }
2639 fn cast(syntax: SyntaxNode) -> Option<Self> {
2640 if Self::can_cast(syntax.kind()) {
2641 Some(Self { syntax })
2646 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2648 impl AstNode for WildcardPat {
2649 fn can_cast(kind: SyntaxKind) -> bool { kind == WILDCARD_PAT }
2650 fn cast(syntax: SyntaxNode) -> Option<Self> {
2651 if Self::can_cast(syntax.kind()) {
2652 Some(Self { syntax })
2657 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2659 impl AstNode for RangePat {
2660 fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_PAT }
2661 fn cast(syntax: SyntaxNode) -> Option<Self> {
2662 if Self::can_cast(syntax.kind()) {
2663 Some(Self { syntax })
2668 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2670 impl AstNode for RecordPat {
2671 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT }
2672 fn cast(syntax: SyntaxNode) -> Option<Self> {
2673 if Self::can_cast(syntax.kind()) {
2674 Some(Self { syntax })
2679 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2681 impl AstNode for RefPat {
2682 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_PAT }
2683 fn cast(syntax: SyntaxNode) -> Option<Self> {
2684 if Self::can_cast(syntax.kind()) {
2685 Some(Self { syntax })
2690 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2692 impl AstNode for SlicePat {
2693 fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_PAT }
2694 fn cast(syntax: SyntaxNode) -> Option<Self> {
2695 if Self::can_cast(syntax.kind()) {
2696 Some(Self { syntax })
2701 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2703 impl AstNode for TuplePat {
2704 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_PAT }
2705 fn cast(syntax: SyntaxNode) -> Option<Self> {
2706 if Self::can_cast(syntax.kind()) {
2707 Some(Self { syntax })
2712 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2714 impl AstNode for TupleStructPat {
2715 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_STRUCT_PAT }
2716 fn cast(syntax: SyntaxNode) -> Option<Self> {
2717 if Self::can_cast(syntax.kind()) {
2718 Some(Self { syntax })
2723 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2725 impl AstNode for RecordPatFieldList {
2726 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD_LIST }
2727 fn cast(syntax: SyntaxNode) -> Option<Self> {
2728 if Self::can_cast(syntax.kind()) {
2729 Some(Self { syntax })
2734 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2736 impl AstNode for RecordPatField {
2737 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD }
2738 fn cast(syntax: SyntaxNode) -> Option<Self> {
2739 if Self::can_cast(syntax.kind()) {
2740 Some(Self { syntax })
2745 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2747 impl From<TypeArg> for GenericArg {
2748 fn from(node: TypeArg) -> GenericArg { GenericArg::TypeArg(node) }
2750 impl From<AssocTypeArg> for GenericArg {
2751 fn from(node: AssocTypeArg) -> GenericArg { GenericArg::AssocTypeArg(node) }
2753 impl From<LifetimeArg> for GenericArg {
2754 fn from(node: LifetimeArg) -> GenericArg { GenericArg::LifetimeArg(node) }
2756 impl From<ConstArg> for GenericArg {
2757 fn from(node: ConstArg) -> GenericArg { GenericArg::ConstArg(node) }
2759 impl AstNode for GenericArg {
2760 fn can_cast(kind: SyntaxKind) -> bool {
2762 TYPE_ARG | ASSOC_TYPE_ARG | LIFETIME_ARG | CONST_ARG => true,
2766 fn cast(syntax: SyntaxNode) -> Option<Self> {
2767 let res = match syntax.kind() {
2768 TYPE_ARG => GenericArg::TypeArg(TypeArg { syntax }),
2769 ASSOC_TYPE_ARG => GenericArg::AssocTypeArg(AssocTypeArg { syntax }),
2770 LIFETIME_ARG => GenericArg::LifetimeArg(LifetimeArg { syntax }),
2771 CONST_ARG => GenericArg::ConstArg(ConstArg { syntax }),
2776 fn syntax(&self) -> &SyntaxNode {
2778 GenericArg::TypeArg(it) => &it.syntax,
2779 GenericArg::AssocTypeArg(it) => &it.syntax,
2780 GenericArg::LifetimeArg(it) => &it.syntax,
2781 GenericArg::ConstArg(it) => &it.syntax,
2785 impl From<ArrayType> for Type {
2786 fn from(node: ArrayType) -> Type { Type::ArrayType(node) }
2788 impl From<DynTraitType> for Type {
2789 fn from(node: DynTraitType) -> Type { Type::DynTraitType(node) }
2791 impl From<FnPtrType> for Type {
2792 fn from(node: FnPtrType) -> Type { Type::FnPtrType(node) }
2794 impl From<ForType> for Type {
2795 fn from(node: ForType) -> Type { Type::ForType(node) }
2797 impl From<ImplTraitType> for Type {
2798 fn from(node: ImplTraitType) -> Type { Type::ImplTraitType(node) }
2800 impl From<InferType> for Type {
2801 fn from(node: InferType) -> Type { Type::InferType(node) }
2803 impl From<NeverType> for Type {
2804 fn from(node: NeverType) -> Type { Type::NeverType(node) }
2806 impl From<ParenType> for Type {
2807 fn from(node: ParenType) -> Type { Type::ParenType(node) }
2809 impl From<PathType> for Type {
2810 fn from(node: PathType) -> Type { Type::PathType(node) }
2812 impl From<PtrType> for Type {
2813 fn from(node: PtrType) -> Type { Type::PtrType(node) }
2815 impl From<RefType> for Type {
2816 fn from(node: RefType) -> Type { Type::RefType(node) }
2818 impl From<SliceType> for Type {
2819 fn from(node: SliceType) -> Type { Type::SliceType(node) }
2821 impl From<TupleType> for Type {
2822 fn from(node: TupleType) -> Type { Type::TupleType(node) }
2824 impl AstNode for Type {
2825 fn can_cast(kind: SyntaxKind) -> bool {
2827 ARRAY_TYPE | DYN_TRAIT_TYPE | FN_PTR_TYPE | FOR_TYPE | IMPL_TRAIT_TYPE | INFER_TYPE
2828 | NEVER_TYPE | PAREN_TYPE | PATH_TYPE | PTR_TYPE | REF_TYPE | SLICE_TYPE
2829 | TUPLE_TYPE => true,
2833 fn cast(syntax: SyntaxNode) -> Option<Self> {
2834 let res = match syntax.kind() {
2835 ARRAY_TYPE => Type::ArrayType(ArrayType { syntax }),
2836 DYN_TRAIT_TYPE => Type::DynTraitType(DynTraitType { syntax }),
2837 FN_PTR_TYPE => Type::FnPtrType(FnPtrType { syntax }),
2838 FOR_TYPE => Type::ForType(ForType { syntax }),
2839 IMPL_TRAIT_TYPE => Type::ImplTraitType(ImplTraitType { syntax }),
2840 INFER_TYPE => Type::InferType(InferType { syntax }),
2841 NEVER_TYPE => Type::NeverType(NeverType { syntax }),
2842 PAREN_TYPE => Type::ParenType(ParenType { syntax }),
2843 PATH_TYPE => Type::PathType(PathType { syntax }),
2844 PTR_TYPE => Type::PtrType(PtrType { syntax }),
2845 REF_TYPE => Type::RefType(RefType { syntax }),
2846 SLICE_TYPE => Type::SliceType(SliceType { syntax }),
2847 TUPLE_TYPE => Type::TupleType(TupleType { syntax }),
2852 fn syntax(&self) -> &SyntaxNode {
2854 Type::ArrayType(it) => &it.syntax,
2855 Type::DynTraitType(it) => &it.syntax,
2856 Type::FnPtrType(it) => &it.syntax,
2857 Type::ForType(it) => &it.syntax,
2858 Type::ImplTraitType(it) => &it.syntax,
2859 Type::InferType(it) => &it.syntax,
2860 Type::NeverType(it) => &it.syntax,
2861 Type::ParenType(it) => &it.syntax,
2862 Type::PathType(it) => &it.syntax,
2863 Type::PtrType(it) => &it.syntax,
2864 Type::RefType(it) => &it.syntax,
2865 Type::SliceType(it) => &it.syntax,
2866 Type::TupleType(it) => &it.syntax,
2870 impl From<ArrayExpr> for Expr {
2871 fn from(node: ArrayExpr) -> Expr { Expr::ArrayExpr(node) }
2873 impl From<AwaitExpr> for Expr {
2874 fn from(node: AwaitExpr) -> Expr { Expr::AwaitExpr(node) }
2876 impl From<BinExpr> for Expr {
2877 fn from(node: BinExpr) -> Expr { Expr::BinExpr(node) }
2879 impl From<BlockExpr> for Expr {
2880 fn from(node: BlockExpr) -> Expr { Expr::BlockExpr(node) }
2882 impl From<BoxExpr> for Expr {
2883 fn from(node: BoxExpr) -> Expr { Expr::BoxExpr(node) }
2885 impl From<BreakExpr> for Expr {
2886 fn from(node: BreakExpr) -> Expr { Expr::BreakExpr(node) }
2888 impl From<CallExpr> for Expr {
2889 fn from(node: CallExpr) -> Expr { Expr::CallExpr(node) }
2891 impl From<CastExpr> for Expr {
2892 fn from(node: CastExpr) -> Expr { Expr::CastExpr(node) }
2894 impl From<ClosureExpr> for Expr {
2895 fn from(node: ClosureExpr) -> Expr { Expr::ClosureExpr(node) }
2897 impl From<ContinueExpr> for Expr {
2898 fn from(node: ContinueExpr) -> Expr { Expr::ContinueExpr(node) }
2900 impl From<EffectExpr> for Expr {
2901 fn from(node: EffectExpr) -> Expr { Expr::EffectExpr(node) }
2903 impl From<FieldExpr> for Expr {
2904 fn from(node: FieldExpr) -> Expr { Expr::FieldExpr(node) }
2906 impl From<ForExpr> for Expr {
2907 fn from(node: ForExpr) -> Expr { Expr::ForExpr(node) }
2909 impl From<IfExpr> for Expr {
2910 fn from(node: IfExpr) -> Expr { Expr::IfExpr(node) }
2912 impl From<IndexExpr> for Expr {
2913 fn from(node: IndexExpr) -> Expr { Expr::IndexExpr(node) }
2915 impl From<Literal> for Expr {
2916 fn from(node: Literal) -> Expr { Expr::Literal(node) }
2918 impl From<LoopExpr> for Expr {
2919 fn from(node: LoopExpr) -> Expr { Expr::LoopExpr(node) }
2921 impl From<MacroCall> for Expr {
2922 fn from(node: MacroCall) -> Expr { Expr::MacroCall(node) }
2924 impl From<MatchExpr> for Expr {
2925 fn from(node: MatchExpr) -> Expr { Expr::MatchExpr(node) }
2927 impl From<MethodCallExpr> for Expr {
2928 fn from(node: MethodCallExpr) -> Expr { Expr::MethodCallExpr(node) }
2930 impl From<ParenExpr> for Expr {
2931 fn from(node: ParenExpr) -> Expr { Expr::ParenExpr(node) }
2933 impl From<PathExpr> for Expr {
2934 fn from(node: PathExpr) -> Expr { Expr::PathExpr(node) }
2936 impl From<PrefixExpr> for Expr {
2937 fn from(node: PrefixExpr) -> Expr { Expr::PrefixExpr(node) }
2939 impl From<RangeExpr> for Expr {
2940 fn from(node: RangeExpr) -> Expr { Expr::RangeExpr(node) }
2942 impl From<RecordExpr> for Expr {
2943 fn from(node: RecordExpr) -> Expr { Expr::RecordExpr(node) }
2945 impl From<RefExpr> for Expr {
2946 fn from(node: RefExpr) -> Expr { Expr::RefExpr(node) }
2948 impl From<ReturnExpr> for Expr {
2949 fn from(node: ReturnExpr) -> Expr { Expr::ReturnExpr(node) }
2951 impl From<TryExpr> for Expr {
2952 fn from(node: TryExpr) -> Expr { Expr::TryExpr(node) }
2954 impl From<TupleExpr> for Expr {
2955 fn from(node: TupleExpr) -> Expr { Expr::TupleExpr(node) }
2957 impl From<WhileExpr> for Expr {
2958 fn from(node: WhileExpr) -> Expr { Expr::WhileExpr(node) }
2960 impl AstNode for Expr {
2961 fn can_cast(kind: SyntaxKind) -> bool {
2963 ARRAY_EXPR | AWAIT_EXPR | BIN_EXPR | BLOCK_EXPR | BOX_EXPR | BREAK_EXPR | CALL_EXPR
2964 | CAST_EXPR | CLOSURE_EXPR | CONTINUE_EXPR | EFFECT_EXPR | FIELD_EXPR | FOR_EXPR
2965 | IF_EXPR | INDEX_EXPR | LITERAL | LOOP_EXPR | MACRO_CALL | MATCH_EXPR
2966 | METHOD_CALL_EXPR | PAREN_EXPR | PATH_EXPR | PREFIX_EXPR | RANGE_EXPR
2967 | RECORD_EXPR | REF_EXPR | RETURN_EXPR | TRY_EXPR | TUPLE_EXPR | WHILE_EXPR => true,
2971 fn cast(syntax: SyntaxNode) -> Option<Self> {
2972 let res = match syntax.kind() {
2973 ARRAY_EXPR => Expr::ArrayExpr(ArrayExpr { syntax }),
2974 AWAIT_EXPR => Expr::AwaitExpr(AwaitExpr { syntax }),
2975 BIN_EXPR => Expr::BinExpr(BinExpr { syntax }),
2976 BLOCK_EXPR => Expr::BlockExpr(BlockExpr { syntax }),
2977 BOX_EXPR => Expr::BoxExpr(BoxExpr { syntax }),
2978 BREAK_EXPR => Expr::BreakExpr(BreakExpr { syntax }),
2979 CALL_EXPR => Expr::CallExpr(CallExpr { syntax }),
2980 CAST_EXPR => Expr::CastExpr(CastExpr { syntax }),
2981 CLOSURE_EXPR => Expr::ClosureExpr(ClosureExpr { syntax }),
2982 CONTINUE_EXPR => Expr::ContinueExpr(ContinueExpr { syntax }),
2983 EFFECT_EXPR => Expr::EffectExpr(EffectExpr { syntax }),
2984 FIELD_EXPR => Expr::FieldExpr(FieldExpr { syntax }),
2985 FOR_EXPR => Expr::ForExpr(ForExpr { syntax }),
2986 IF_EXPR => Expr::IfExpr(IfExpr { syntax }),
2987 INDEX_EXPR => Expr::IndexExpr(IndexExpr { syntax }),
2988 LITERAL => Expr::Literal(Literal { syntax }),
2989 LOOP_EXPR => Expr::LoopExpr(LoopExpr { syntax }),
2990 MACRO_CALL => Expr::MacroCall(MacroCall { syntax }),
2991 MATCH_EXPR => Expr::MatchExpr(MatchExpr { syntax }),
2992 METHOD_CALL_EXPR => Expr::MethodCallExpr(MethodCallExpr { syntax }),
2993 PAREN_EXPR => Expr::ParenExpr(ParenExpr { syntax }),
2994 PATH_EXPR => Expr::PathExpr(PathExpr { syntax }),
2995 PREFIX_EXPR => Expr::PrefixExpr(PrefixExpr { syntax }),
2996 RANGE_EXPR => Expr::RangeExpr(RangeExpr { syntax }),
2997 RECORD_EXPR => Expr::RecordExpr(RecordExpr { syntax }),
2998 REF_EXPR => Expr::RefExpr(RefExpr { syntax }),
2999 RETURN_EXPR => Expr::ReturnExpr(ReturnExpr { syntax }),
3000 TRY_EXPR => Expr::TryExpr(TryExpr { syntax }),
3001 TUPLE_EXPR => Expr::TupleExpr(TupleExpr { syntax }),
3002 WHILE_EXPR => Expr::WhileExpr(WhileExpr { syntax }),
3007 fn syntax(&self) -> &SyntaxNode {
3009 Expr::ArrayExpr(it) => &it.syntax,
3010 Expr::AwaitExpr(it) => &it.syntax,
3011 Expr::BinExpr(it) => &it.syntax,
3012 Expr::BlockExpr(it) => &it.syntax,
3013 Expr::BoxExpr(it) => &it.syntax,
3014 Expr::BreakExpr(it) => &it.syntax,
3015 Expr::CallExpr(it) => &it.syntax,
3016 Expr::CastExpr(it) => &it.syntax,
3017 Expr::ClosureExpr(it) => &it.syntax,
3018 Expr::ContinueExpr(it) => &it.syntax,
3019 Expr::EffectExpr(it) => &it.syntax,
3020 Expr::FieldExpr(it) => &it.syntax,
3021 Expr::ForExpr(it) => &it.syntax,
3022 Expr::IfExpr(it) => &it.syntax,
3023 Expr::IndexExpr(it) => &it.syntax,
3024 Expr::Literal(it) => &it.syntax,
3025 Expr::LoopExpr(it) => &it.syntax,
3026 Expr::MacroCall(it) => &it.syntax,
3027 Expr::MatchExpr(it) => &it.syntax,
3028 Expr::MethodCallExpr(it) => &it.syntax,
3029 Expr::ParenExpr(it) => &it.syntax,
3030 Expr::PathExpr(it) => &it.syntax,
3031 Expr::PrefixExpr(it) => &it.syntax,
3032 Expr::RangeExpr(it) => &it.syntax,
3033 Expr::RecordExpr(it) => &it.syntax,
3034 Expr::RefExpr(it) => &it.syntax,
3035 Expr::ReturnExpr(it) => &it.syntax,
3036 Expr::TryExpr(it) => &it.syntax,
3037 Expr::TupleExpr(it) => &it.syntax,
3038 Expr::WhileExpr(it) => &it.syntax,
3042 impl From<Const> for Item {
3043 fn from(node: Const) -> Item { Item::Const(node) }
3045 impl From<Enum> for Item {
3046 fn from(node: Enum) -> Item { Item::Enum(node) }
3048 impl From<ExternBlock> for Item {
3049 fn from(node: ExternBlock) -> Item { Item::ExternBlock(node) }
3051 impl From<ExternCrate> for Item {
3052 fn from(node: ExternCrate) -> Item { Item::ExternCrate(node) }
3054 impl From<Fn> for Item {
3055 fn from(node: Fn) -> Item { Item::Fn(node) }
3057 impl From<Impl> for Item {
3058 fn from(node: Impl) -> Item { Item::Impl(node) }
3060 impl From<MacroCall> for Item {
3061 fn from(node: MacroCall) -> Item { Item::MacroCall(node) }
3063 impl From<Module> for Item {
3064 fn from(node: Module) -> Item { Item::Module(node) }
3066 impl From<Static> for Item {
3067 fn from(node: Static) -> Item { Item::Static(node) }
3069 impl From<Struct> for Item {
3070 fn from(node: Struct) -> Item { Item::Struct(node) }
3072 impl From<Trait> for Item {
3073 fn from(node: Trait) -> Item { Item::Trait(node) }
3075 impl From<TypeAlias> for Item {
3076 fn from(node: TypeAlias) -> Item { Item::TypeAlias(node) }
3078 impl From<Union> for Item {
3079 fn from(node: Union) -> Item { Item::Union(node) }
3081 impl From<Use> for Item {
3082 fn from(node: Use) -> Item { Item::Use(node) }
3084 impl AstNode for Item {
3085 fn can_cast(kind: SyntaxKind) -> bool {
3087 CONST | ENUM | EXTERN_BLOCK | EXTERN_CRATE | FN | IMPL | MACRO_CALL | MODULE
3088 | STATIC | STRUCT | TRAIT | TYPE_ALIAS | UNION | USE => true,
3092 fn cast(syntax: SyntaxNode) -> Option<Self> {
3093 let res = match syntax.kind() {
3094 CONST => Item::Const(Const { syntax }),
3095 ENUM => Item::Enum(Enum { syntax }),
3096 EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }),
3097 EXTERN_CRATE => Item::ExternCrate(ExternCrate { syntax }),
3098 FN => Item::Fn(Fn { syntax }),
3099 IMPL => Item::Impl(Impl { syntax }),
3100 MACRO_CALL => Item::MacroCall(MacroCall { syntax }),
3101 MODULE => Item::Module(Module { syntax }),
3102 STATIC => Item::Static(Static { syntax }),
3103 STRUCT => Item::Struct(Struct { syntax }),
3104 TRAIT => Item::Trait(Trait { syntax }),
3105 TYPE_ALIAS => Item::TypeAlias(TypeAlias { syntax }),
3106 UNION => Item::Union(Union { syntax }),
3107 USE => Item::Use(Use { syntax }),
3112 fn syntax(&self) -> &SyntaxNode {
3114 Item::Const(it) => &it.syntax,
3115 Item::Enum(it) => &it.syntax,
3116 Item::ExternBlock(it) => &it.syntax,
3117 Item::ExternCrate(it) => &it.syntax,
3118 Item::Fn(it) => &it.syntax,
3119 Item::Impl(it) => &it.syntax,
3120 Item::MacroCall(it) => &it.syntax,
3121 Item::Module(it) => &it.syntax,
3122 Item::Static(it) => &it.syntax,
3123 Item::Struct(it) => &it.syntax,
3124 Item::Trait(it) => &it.syntax,
3125 Item::TypeAlias(it) => &it.syntax,
3126 Item::Union(it) => &it.syntax,
3127 Item::Use(it) => &it.syntax,
3131 impl From<ExprStmt> for Stmt {
3132 fn from(node: ExprStmt) -> Stmt { Stmt::ExprStmt(node) }
3134 impl From<Item> for Stmt {
3135 fn from(node: Item) -> Stmt { Stmt::Item(node) }
3137 impl From<LetStmt> for Stmt {
3138 fn from(node: LetStmt) -> Stmt { Stmt::LetStmt(node) }
3140 impl From<IdentPat> for Pat {
3141 fn from(node: IdentPat) -> Pat { Pat::IdentPat(node) }
3143 impl From<BoxPat> for Pat {
3144 fn from(node: BoxPat) -> Pat { Pat::BoxPat(node) }
3146 impl From<RestPat> for Pat {
3147 fn from(node: RestPat) -> Pat { Pat::RestPat(node) }
3149 impl From<LiteralPat> for Pat {
3150 fn from(node: LiteralPat) -> Pat { Pat::LiteralPat(node) }
3152 impl From<MacroPat> for Pat {
3153 fn from(node: MacroPat) -> Pat { Pat::MacroPat(node) }
3155 impl From<OrPat> for Pat {
3156 fn from(node: OrPat) -> Pat { Pat::OrPat(node) }
3158 impl From<ParenPat> for Pat {
3159 fn from(node: ParenPat) -> Pat { Pat::ParenPat(node) }
3161 impl From<PathPat> for Pat {
3162 fn from(node: PathPat) -> Pat { Pat::PathPat(node) }
3164 impl From<WildcardPat> for Pat {
3165 fn from(node: WildcardPat) -> Pat { Pat::WildcardPat(node) }
3167 impl From<RangePat> for Pat {
3168 fn from(node: RangePat) -> Pat { Pat::RangePat(node) }
3170 impl From<RecordPat> for Pat {
3171 fn from(node: RecordPat) -> Pat { Pat::RecordPat(node) }
3173 impl From<RefPat> for Pat {
3174 fn from(node: RefPat) -> Pat { Pat::RefPat(node) }
3176 impl From<SlicePat> for Pat {
3177 fn from(node: SlicePat) -> Pat { Pat::SlicePat(node) }
3179 impl From<TuplePat> for Pat {
3180 fn from(node: TuplePat) -> Pat { Pat::TuplePat(node) }
3182 impl From<TupleStructPat> for Pat {
3183 fn from(node: TupleStructPat) -> Pat { Pat::TupleStructPat(node) }
3185 impl AstNode for Pat {
3186 fn can_cast(kind: SyntaxKind) -> bool {
3188 IDENT_PAT | BOX_PAT | REST_PAT | LITERAL_PAT | MACRO_PAT | OR_PAT | PAREN_PAT
3189 | PATH_PAT | WILDCARD_PAT | RANGE_PAT | RECORD_PAT | REF_PAT | SLICE_PAT
3190 | TUPLE_PAT | TUPLE_STRUCT_PAT => true,
3194 fn cast(syntax: SyntaxNode) -> Option<Self> {
3195 let res = match syntax.kind() {
3196 IDENT_PAT => Pat::IdentPat(IdentPat { syntax }),
3197 BOX_PAT => Pat::BoxPat(BoxPat { syntax }),
3198 REST_PAT => Pat::RestPat(RestPat { syntax }),
3199 LITERAL_PAT => Pat::LiteralPat(LiteralPat { syntax }),
3200 MACRO_PAT => Pat::MacroPat(MacroPat { syntax }),
3201 OR_PAT => Pat::OrPat(OrPat { syntax }),
3202 PAREN_PAT => Pat::ParenPat(ParenPat { syntax }),
3203 PATH_PAT => Pat::PathPat(PathPat { syntax }),
3204 WILDCARD_PAT => Pat::WildcardPat(WildcardPat { syntax }),
3205 RANGE_PAT => Pat::RangePat(RangePat { syntax }),
3206 RECORD_PAT => Pat::RecordPat(RecordPat { syntax }),
3207 REF_PAT => Pat::RefPat(RefPat { syntax }),
3208 SLICE_PAT => Pat::SlicePat(SlicePat { syntax }),
3209 TUPLE_PAT => Pat::TuplePat(TuplePat { syntax }),
3210 TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }),
3215 fn syntax(&self) -> &SyntaxNode {
3217 Pat::IdentPat(it) => &it.syntax,
3218 Pat::BoxPat(it) => &it.syntax,
3219 Pat::RestPat(it) => &it.syntax,
3220 Pat::LiteralPat(it) => &it.syntax,
3221 Pat::MacroPat(it) => &it.syntax,
3222 Pat::OrPat(it) => &it.syntax,
3223 Pat::ParenPat(it) => &it.syntax,
3224 Pat::PathPat(it) => &it.syntax,
3225 Pat::WildcardPat(it) => &it.syntax,
3226 Pat::RangePat(it) => &it.syntax,
3227 Pat::RecordPat(it) => &it.syntax,
3228 Pat::RefPat(it) => &it.syntax,
3229 Pat::SlicePat(it) => &it.syntax,
3230 Pat::TuplePat(it) => &it.syntax,
3231 Pat::TupleStructPat(it) => &it.syntax,
3235 impl From<RecordFieldList> for FieldList {
3236 fn from(node: RecordFieldList) -> FieldList { FieldList::RecordFieldList(node) }
3238 impl From<TupleFieldList> for FieldList {
3239 fn from(node: TupleFieldList) -> FieldList { FieldList::TupleFieldList(node) }
3241 impl AstNode for FieldList {
3242 fn can_cast(kind: SyntaxKind) -> bool {
3244 RECORD_FIELD_LIST | TUPLE_FIELD_LIST => true,
3248 fn cast(syntax: SyntaxNode) -> Option<Self> {
3249 let res = match syntax.kind() {
3250 RECORD_FIELD_LIST => FieldList::RecordFieldList(RecordFieldList { syntax }),
3251 TUPLE_FIELD_LIST => FieldList::TupleFieldList(TupleFieldList { syntax }),
3256 fn syntax(&self) -> &SyntaxNode {
3258 FieldList::RecordFieldList(it) => &it.syntax,
3259 FieldList::TupleFieldList(it) => &it.syntax,
3263 impl From<Enum> for AdtDef {
3264 fn from(node: Enum) -> AdtDef { AdtDef::Enum(node) }
3266 impl From<Struct> for AdtDef {
3267 fn from(node: Struct) -> AdtDef { AdtDef::Struct(node) }
3269 impl From<Union> for AdtDef {
3270 fn from(node: Union) -> AdtDef { AdtDef::Union(node) }
3272 impl AstNode for AdtDef {
3273 fn can_cast(kind: SyntaxKind) -> bool {
3275 ENUM | STRUCT | UNION => true,
3279 fn cast(syntax: SyntaxNode) -> Option<Self> {
3280 let res = match syntax.kind() {
3281 ENUM => AdtDef::Enum(Enum { syntax }),
3282 STRUCT => AdtDef::Struct(Struct { syntax }),
3283 UNION => AdtDef::Union(Union { syntax }),
3288 fn syntax(&self) -> &SyntaxNode {
3290 AdtDef::Enum(it) => &it.syntax,
3291 AdtDef::Struct(it) => &it.syntax,
3292 AdtDef::Union(it) => &it.syntax,
3296 impl From<Const> for AssocItem {
3297 fn from(node: Const) -> AssocItem { AssocItem::Const(node) }
3299 impl From<Fn> for AssocItem {
3300 fn from(node: Fn) -> AssocItem { AssocItem::Fn(node) }
3302 impl From<MacroCall> for AssocItem {
3303 fn from(node: MacroCall) -> AssocItem { AssocItem::MacroCall(node) }
3305 impl From<TypeAlias> for AssocItem {
3306 fn from(node: TypeAlias) -> AssocItem { AssocItem::TypeAlias(node) }
3308 impl AstNode for AssocItem {
3309 fn can_cast(kind: SyntaxKind) -> bool {
3311 CONST | FN | MACRO_CALL | TYPE_ALIAS => true,
3315 fn cast(syntax: SyntaxNode) -> Option<Self> {
3316 let res = match syntax.kind() {
3317 CONST => AssocItem::Const(Const { syntax }),
3318 FN => AssocItem::Fn(Fn { syntax }),
3319 MACRO_CALL => AssocItem::MacroCall(MacroCall { syntax }),
3320 TYPE_ALIAS => AssocItem::TypeAlias(TypeAlias { syntax }),
3325 fn syntax(&self) -> &SyntaxNode {
3327 AssocItem::Const(it) => &it.syntax,
3328 AssocItem::Fn(it) => &it.syntax,
3329 AssocItem::MacroCall(it) => &it.syntax,
3330 AssocItem::TypeAlias(it) => &it.syntax,
3334 impl From<Fn> for ExternItem {
3335 fn from(node: Fn) -> ExternItem { ExternItem::Fn(node) }
3337 impl From<MacroCall> for ExternItem {
3338 fn from(node: MacroCall) -> ExternItem { ExternItem::MacroCall(node) }
3340 impl From<Static> for ExternItem {
3341 fn from(node: Static) -> ExternItem { ExternItem::Static(node) }
3343 impl From<TypeAlias> for ExternItem {
3344 fn from(node: TypeAlias) -> ExternItem { ExternItem::TypeAlias(node) }
3346 impl AstNode for ExternItem {
3347 fn can_cast(kind: SyntaxKind) -> bool {
3349 FN | MACRO_CALL | STATIC | TYPE_ALIAS => true,
3353 fn cast(syntax: SyntaxNode) -> Option<Self> {
3354 let res = match syntax.kind() {
3355 FN => ExternItem::Fn(Fn { syntax }),
3356 MACRO_CALL => ExternItem::MacroCall(MacroCall { syntax }),
3357 STATIC => ExternItem::Static(Static { syntax }),
3358 TYPE_ALIAS => ExternItem::TypeAlias(TypeAlias { syntax }),
3363 fn syntax(&self) -> &SyntaxNode {
3365 ExternItem::Fn(it) => &it.syntax,
3366 ExternItem::MacroCall(it) => &it.syntax,
3367 ExternItem::Static(it) => &it.syntax,
3368 ExternItem::TypeAlias(it) => &it.syntax,
3372 impl From<ConstParam> for GenericParam {
3373 fn from(node: ConstParam) -> GenericParam { GenericParam::ConstParam(node) }
3375 impl From<LifetimeParam> for GenericParam {
3376 fn from(node: LifetimeParam) -> GenericParam { GenericParam::LifetimeParam(node) }
3378 impl From<TypeParam> for GenericParam {
3379 fn from(node: TypeParam) -> GenericParam { GenericParam::TypeParam(node) }
3381 impl AstNode for GenericParam {
3382 fn can_cast(kind: SyntaxKind) -> bool {
3384 CONST_PARAM | LIFETIME_PARAM | TYPE_PARAM => true,
3388 fn cast(syntax: SyntaxNode) -> Option<Self> {
3389 let res = match syntax.kind() {
3390 CONST_PARAM => GenericParam::ConstParam(ConstParam { syntax }),
3391 LIFETIME_PARAM => GenericParam::LifetimeParam(LifetimeParam { syntax }),
3392 TYPE_PARAM => GenericParam::TypeParam(TypeParam { syntax }),
3397 fn syntax(&self) -> &SyntaxNode {
3399 GenericParam::ConstParam(it) => &it.syntax,
3400 GenericParam::LifetimeParam(it) => &it.syntax,
3401 GenericParam::TypeParam(it) => &it.syntax,
3405 impl std::fmt::Display for GenericArg {
3406 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3407 std::fmt::Display::fmt(self.syntax(), f)
3410 impl std::fmt::Display for Type {
3411 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3412 std::fmt::Display::fmt(self.syntax(), f)
3415 impl std::fmt::Display for Expr {
3416 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3417 std::fmt::Display::fmt(self.syntax(), f)
3420 impl std::fmt::Display for Item {
3421 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3422 std::fmt::Display::fmt(self.syntax(), f)
3425 impl std::fmt::Display for Stmt {
3426 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3427 std::fmt::Display::fmt(self.syntax(), f)
3430 impl std::fmt::Display for Pat {
3431 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3432 std::fmt::Display::fmt(self.syntax(), f)
3435 impl std::fmt::Display for FieldList {
3436 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3437 std::fmt::Display::fmt(self.syntax(), f)
3440 impl std::fmt::Display for AdtDef {
3441 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3442 std::fmt::Display::fmt(self.syntax(), f)
3445 impl std::fmt::Display for AssocItem {
3446 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3447 std::fmt::Display::fmt(self.syntax(), f)
3450 impl std::fmt::Display for ExternItem {
3451 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3452 std::fmt::Display::fmt(self.syntax(), f)
3455 impl std::fmt::Display for GenericParam {
3456 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3457 std::fmt::Display::fmt(self.syntax(), f)
3460 impl std::fmt::Display for Name {
3461 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3462 std::fmt::Display::fmt(self.syntax(), f)
3465 impl std::fmt::Display for NameRef {
3466 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3467 std::fmt::Display::fmt(self.syntax(), f)
3470 impl std::fmt::Display for Path {
3471 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3472 std::fmt::Display::fmt(self.syntax(), f)
3475 impl std::fmt::Display for PathSegment {
3476 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3477 std::fmt::Display::fmt(self.syntax(), f)
3480 impl std::fmt::Display for GenericArgList {
3481 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3482 std::fmt::Display::fmt(self.syntax(), f)
3485 impl std::fmt::Display for ParamList {
3486 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3487 std::fmt::Display::fmt(self.syntax(), f)
3490 impl std::fmt::Display for RetType {
3491 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3492 std::fmt::Display::fmt(self.syntax(), f)
3495 impl std::fmt::Display for PathType {
3496 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3497 std::fmt::Display::fmt(self.syntax(), f)
3500 impl std::fmt::Display for TypeArg {
3501 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3502 std::fmt::Display::fmt(self.syntax(), f)
3505 impl std::fmt::Display for AssocTypeArg {
3506 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3507 std::fmt::Display::fmt(self.syntax(), f)
3510 impl std::fmt::Display for LifetimeArg {
3511 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3512 std::fmt::Display::fmt(self.syntax(), f)
3515 impl std::fmt::Display for ConstArg {
3516 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3517 std::fmt::Display::fmt(self.syntax(), f)
3520 impl std::fmt::Display for TypeBoundList {
3521 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3522 std::fmt::Display::fmt(self.syntax(), f)
3525 impl std::fmt::Display for MacroCall {
3526 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3527 std::fmt::Display::fmt(self.syntax(), f)
3530 impl std::fmt::Display for Attr {
3531 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3532 std::fmt::Display::fmt(self.syntax(), f)
3535 impl std::fmt::Display for TokenTree {
3536 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3537 std::fmt::Display::fmt(self.syntax(), f)
3540 impl std::fmt::Display for MacroItems {
3541 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3542 std::fmt::Display::fmt(self.syntax(), f)
3545 impl std::fmt::Display for MacroStmts {
3546 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3547 std::fmt::Display::fmt(self.syntax(), f)
3550 impl std::fmt::Display for SourceFile {
3551 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3552 std::fmt::Display::fmt(self.syntax(), f)
3555 impl std::fmt::Display for Const {
3556 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3557 std::fmt::Display::fmt(self.syntax(), f)
3560 impl std::fmt::Display for Enum {
3561 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3562 std::fmt::Display::fmt(self.syntax(), f)
3565 impl std::fmt::Display for ExternBlock {
3566 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3567 std::fmt::Display::fmt(self.syntax(), f)
3570 impl std::fmt::Display for ExternCrate {
3571 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3572 std::fmt::Display::fmt(self.syntax(), f)
3575 impl std::fmt::Display for Fn {
3576 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3577 std::fmt::Display::fmt(self.syntax(), f)
3580 impl std::fmt::Display for Impl {
3581 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3582 std::fmt::Display::fmt(self.syntax(), f)
3585 impl std::fmt::Display for Module {
3586 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3587 std::fmt::Display::fmt(self.syntax(), f)
3590 impl std::fmt::Display for Static {
3591 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3592 std::fmt::Display::fmt(self.syntax(), f)
3595 impl std::fmt::Display for Struct {
3596 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3597 std::fmt::Display::fmt(self.syntax(), f)
3600 impl std::fmt::Display for Trait {
3601 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3602 std::fmt::Display::fmt(self.syntax(), f)
3605 impl std::fmt::Display for TypeAlias {
3606 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3607 std::fmt::Display::fmt(self.syntax(), f)
3610 impl std::fmt::Display for Union {
3611 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3612 std::fmt::Display::fmt(self.syntax(), f)
3615 impl std::fmt::Display for Use {
3616 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3617 std::fmt::Display::fmt(self.syntax(), f)
3620 impl std::fmt::Display for Visibility {
3621 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3622 std::fmt::Display::fmt(self.syntax(), f)
3625 impl std::fmt::Display for ItemList {
3626 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3627 std::fmt::Display::fmt(self.syntax(), f)
3630 impl std::fmt::Display for Rename {
3631 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3632 std::fmt::Display::fmt(self.syntax(), f)
3635 impl std::fmt::Display for UseTree {
3636 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3637 std::fmt::Display::fmt(self.syntax(), f)
3640 impl std::fmt::Display for UseTreeList {
3641 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3642 std::fmt::Display::fmt(self.syntax(), f)
3645 impl std::fmt::Display for Abi {
3646 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3647 std::fmt::Display::fmt(self.syntax(), f)
3650 impl std::fmt::Display for GenericParamList {
3651 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3652 std::fmt::Display::fmt(self.syntax(), f)
3655 impl std::fmt::Display for WhereClause {
3656 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3657 std::fmt::Display::fmt(self.syntax(), f)
3660 impl std::fmt::Display for BlockExpr {
3661 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3662 std::fmt::Display::fmt(self.syntax(), f)
3665 impl std::fmt::Display for SelfParam {
3666 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3667 std::fmt::Display::fmt(self.syntax(), f)
3670 impl std::fmt::Display for Param {
3671 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3672 std::fmt::Display::fmt(self.syntax(), f)
3675 impl std::fmt::Display for RecordFieldList {
3676 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3677 std::fmt::Display::fmt(self.syntax(), f)
3680 impl std::fmt::Display for TupleFieldList {
3681 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3682 std::fmt::Display::fmt(self.syntax(), f)
3685 impl std::fmt::Display for RecordField {
3686 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3687 std::fmt::Display::fmt(self.syntax(), f)
3690 impl std::fmt::Display for TupleField {
3691 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3692 std::fmt::Display::fmt(self.syntax(), f)
3695 impl std::fmt::Display for VariantList {
3696 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3697 std::fmt::Display::fmt(self.syntax(), f)
3700 impl std::fmt::Display for Variant {
3701 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3702 std::fmt::Display::fmt(self.syntax(), f)
3705 impl std::fmt::Display for AssocItemList {
3706 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3707 std::fmt::Display::fmt(self.syntax(), f)
3710 impl std::fmt::Display for ExternItemList {
3711 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3712 std::fmt::Display::fmt(self.syntax(), f)
3715 impl std::fmt::Display for ConstParam {
3716 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3717 std::fmt::Display::fmt(self.syntax(), f)
3720 impl std::fmt::Display for LifetimeParam {
3721 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3722 std::fmt::Display::fmt(self.syntax(), f)
3725 impl std::fmt::Display for TypeParam {
3726 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3727 std::fmt::Display::fmt(self.syntax(), f)
3730 impl std::fmt::Display for WherePred {
3731 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3732 std::fmt::Display::fmt(self.syntax(), f)
3735 impl std::fmt::Display for Literal {
3736 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3737 std::fmt::Display::fmt(self.syntax(), f)
3740 impl std::fmt::Display for ExprStmt {
3741 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3742 std::fmt::Display::fmt(self.syntax(), f)
3745 impl std::fmt::Display for LetStmt {
3746 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3747 std::fmt::Display::fmt(self.syntax(), f)
3750 impl std::fmt::Display for ArrayExpr {
3751 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3752 std::fmt::Display::fmt(self.syntax(), f)
3755 impl std::fmt::Display for AwaitExpr {
3756 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3757 std::fmt::Display::fmt(self.syntax(), f)
3760 impl std::fmt::Display for BinExpr {
3761 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3762 std::fmt::Display::fmt(self.syntax(), f)
3765 impl std::fmt::Display for BoxExpr {
3766 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3767 std::fmt::Display::fmt(self.syntax(), f)
3770 impl std::fmt::Display for BreakExpr {
3771 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3772 std::fmt::Display::fmt(self.syntax(), f)
3775 impl std::fmt::Display for CallExpr {
3776 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3777 std::fmt::Display::fmt(self.syntax(), f)
3780 impl std::fmt::Display for CastExpr {
3781 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3782 std::fmt::Display::fmt(self.syntax(), f)
3785 impl std::fmt::Display for ClosureExpr {
3786 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3787 std::fmt::Display::fmt(self.syntax(), f)
3790 impl std::fmt::Display for ContinueExpr {
3791 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3792 std::fmt::Display::fmt(self.syntax(), f)
3795 impl std::fmt::Display for EffectExpr {
3796 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3797 std::fmt::Display::fmt(self.syntax(), f)
3800 impl std::fmt::Display for FieldExpr {
3801 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3802 std::fmt::Display::fmt(self.syntax(), f)
3805 impl std::fmt::Display for ForExpr {
3806 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3807 std::fmt::Display::fmt(self.syntax(), f)
3810 impl std::fmt::Display for IfExpr {
3811 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3812 std::fmt::Display::fmt(self.syntax(), f)
3815 impl std::fmt::Display for IndexExpr {
3816 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3817 std::fmt::Display::fmt(self.syntax(), f)
3820 impl std::fmt::Display for LoopExpr {
3821 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3822 std::fmt::Display::fmt(self.syntax(), f)
3825 impl std::fmt::Display for MatchExpr {
3826 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3827 std::fmt::Display::fmt(self.syntax(), f)
3830 impl std::fmt::Display for MethodCallExpr {
3831 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3832 std::fmt::Display::fmt(self.syntax(), f)
3835 impl std::fmt::Display for ParenExpr {
3836 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3837 std::fmt::Display::fmt(self.syntax(), f)
3840 impl std::fmt::Display for PathExpr {
3841 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3842 std::fmt::Display::fmt(self.syntax(), f)
3845 impl std::fmt::Display for PrefixExpr {
3846 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3847 std::fmt::Display::fmt(self.syntax(), f)
3850 impl std::fmt::Display for RangeExpr {
3851 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3852 std::fmt::Display::fmt(self.syntax(), f)
3855 impl std::fmt::Display for RecordExpr {
3856 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3857 std::fmt::Display::fmt(self.syntax(), f)
3860 impl std::fmt::Display for RefExpr {
3861 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3862 std::fmt::Display::fmt(self.syntax(), f)
3865 impl std::fmt::Display for ReturnExpr {
3866 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3867 std::fmt::Display::fmt(self.syntax(), f)
3870 impl std::fmt::Display for TryExpr {
3871 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3872 std::fmt::Display::fmt(self.syntax(), f)
3875 impl std::fmt::Display for TupleExpr {
3876 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3877 std::fmt::Display::fmt(self.syntax(), f)
3880 impl std::fmt::Display for WhileExpr {
3881 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3882 std::fmt::Display::fmt(self.syntax(), f)
3885 impl std::fmt::Display for Label {
3886 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3887 std::fmt::Display::fmt(self.syntax(), f)
3890 impl std::fmt::Display for RecordExprFieldList {
3891 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3892 std::fmt::Display::fmt(self.syntax(), f)
3895 impl std::fmt::Display for RecordExprField {
3896 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3897 std::fmt::Display::fmt(self.syntax(), f)
3900 impl std::fmt::Display for ArgList {
3901 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3902 std::fmt::Display::fmt(self.syntax(), f)
3905 impl std::fmt::Display for Condition {
3906 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3907 std::fmt::Display::fmt(self.syntax(), f)
3910 impl std::fmt::Display for MatchArmList {
3911 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3912 std::fmt::Display::fmt(self.syntax(), f)
3915 impl std::fmt::Display for MatchArm {
3916 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3917 std::fmt::Display::fmt(self.syntax(), f)
3920 impl std::fmt::Display for MatchGuard {
3921 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3922 std::fmt::Display::fmt(self.syntax(), f)
3925 impl std::fmt::Display for ArrayType {
3926 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3927 std::fmt::Display::fmt(self.syntax(), f)
3930 impl std::fmt::Display for DynTraitType {
3931 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3932 std::fmt::Display::fmt(self.syntax(), f)
3935 impl std::fmt::Display for FnPtrType {
3936 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3937 std::fmt::Display::fmt(self.syntax(), f)
3940 impl std::fmt::Display for ForType {
3941 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3942 std::fmt::Display::fmt(self.syntax(), f)
3945 impl std::fmt::Display for ImplTraitType {
3946 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3947 std::fmt::Display::fmt(self.syntax(), f)
3950 impl std::fmt::Display for InferType {
3951 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3952 std::fmt::Display::fmt(self.syntax(), f)
3955 impl std::fmt::Display for NeverType {
3956 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3957 std::fmt::Display::fmt(self.syntax(), f)
3960 impl std::fmt::Display for ParenType {
3961 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3962 std::fmt::Display::fmt(self.syntax(), f)
3965 impl std::fmt::Display for PtrType {
3966 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3967 std::fmt::Display::fmt(self.syntax(), f)
3970 impl std::fmt::Display for RefType {
3971 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3972 std::fmt::Display::fmt(self.syntax(), f)
3975 impl std::fmt::Display for SliceType {
3976 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3977 std::fmt::Display::fmt(self.syntax(), f)
3980 impl std::fmt::Display for TupleType {
3981 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3982 std::fmt::Display::fmt(self.syntax(), f)
3985 impl std::fmt::Display for TypeBound {
3986 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3987 std::fmt::Display::fmt(self.syntax(), f)
3990 impl std::fmt::Display for IdentPat {
3991 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3992 std::fmt::Display::fmt(self.syntax(), f)
3995 impl std::fmt::Display for BoxPat {
3996 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3997 std::fmt::Display::fmt(self.syntax(), f)
4000 impl std::fmt::Display for RestPat {
4001 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4002 std::fmt::Display::fmt(self.syntax(), f)
4005 impl std::fmt::Display for LiteralPat {
4006 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4007 std::fmt::Display::fmt(self.syntax(), f)
4010 impl std::fmt::Display for MacroPat {
4011 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4012 std::fmt::Display::fmt(self.syntax(), f)
4015 impl std::fmt::Display for OrPat {
4016 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4017 std::fmt::Display::fmt(self.syntax(), f)
4020 impl std::fmt::Display for ParenPat {
4021 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4022 std::fmt::Display::fmt(self.syntax(), f)
4025 impl std::fmt::Display for PathPat {
4026 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4027 std::fmt::Display::fmt(self.syntax(), f)
4030 impl std::fmt::Display for WildcardPat {
4031 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4032 std::fmt::Display::fmt(self.syntax(), f)
4035 impl std::fmt::Display for RangePat {
4036 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4037 std::fmt::Display::fmt(self.syntax(), f)
4040 impl std::fmt::Display for RecordPat {
4041 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4042 std::fmt::Display::fmt(self.syntax(), f)
4045 impl std::fmt::Display for RefPat {
4046 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4047 std::fmt::Display::fmt(self.syntax(), f)
4050 impl std::fmt::Display for SlicePat {
4051 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4052 std::fmt::Display::fmt(self.syntax(), f)
4055 impl std::fmt::Display for TuplePat {
4056 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4057 std::fmt::Display::fmt(self.syntax(), f)
4060 impl std::fmt::Display for TupleStructPat {
4061 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4062 std::fmt::Display::fmt(self.syntax(), f)
4065 impl std::fmt::Display for RecordPatFieldList {
4066 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4067 std::fmt::Display::fmt(self.syntax(), f)
4070 impl std::fmt::Display for RecordPatField {
4071 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4072 std::fmt::Display::fmt(self.syntax(), f)