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 async_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![async]) }
250 pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
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),
1384 impl ast::AttrsOwner for ExternItem {}
1385 impl ast::NameOwner for ExternItem {}
1386 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
1387 pub enum GenericParam {
1388 ConstParam(ConstParam),
1389 LifetimeParam(LifetimeParam),
1390 TypeParam(TypeParam),
1392 impl ast::AttrsOwner for GenericParam {}
1393 impl AstNode for Name {
1394 fn can_cast(kind: SyntaxKind) -> bool { kind == NAME }
1395 fn cast(syntax: SyntaxNode) -> Option<Self> {
1396 if Self::can_cast(syntax.kind()) {
1397 Some(Self { syntax })
1402 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1404 impl AstNode for NameRef {
1405 fn can_cast(kind: SyntaxKind) -> bool { kind == NAME_REF }
1406 fn cast(syntax: SyntaxNode) -> Option<Self> {
1407 if Self::can_cast(syntax.kind()) {
1408 Some(Self { syntax })
1413 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1415 impl AstNode for Path {
1416 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH }
1417 fn cast(syntax: SyntaxNode) -> Option<Self> {
1418 if Self::can_cast(syntax.kind()) {
1419 Some(Self { syntax })
1424 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1426 impl AstNode for PathSegment {
1427 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_SEGMENT }
1428 fn cast(syntax: SyntaxNode) -> Option<Self> {
1429 if Self::can_cast(syntax.kind()) {
1430 Some(Self { syntax })
1435 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1437 impl AstNode for GenericArgList {
1438 fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_ARG_LIST }
1439 fn cast(syntax: SyntaxNode) -> Option<Self> {
1440 if Self::can_cast(syntax.kind()) {
1441 Some(Self { syntax })
1446 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1448 impl AstNode for ParamList {
1449 fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM_LIST }
1450 fn cast(syntax: SyntaxNode) -> Option<Self> {
1451 if Self::can_cast(syntax.kind()) {
1452 Some(Self { syntax })
1457 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1459 impl AstNode for RetType {
1460 fn can_cast(kind: SyntaxKind) -> bool { kind == RET_TYPE }
1461 fn cast(syntax: SyntaxNode) -> Option<Self> {
1462 if Self::can_cast(syntax.kind()) {
1463 Some(Self { syntax })
1468 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1470 impl AstNode for PathType {
1471 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_TYPE }
1472 fn cast(syntax: SyntaxNode) -> Option<Self> {
1473 if Self::can_cast(syntax.kind()) {
1474 Some(Self { syntax })
1479 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1481 impl AstNode for TypeArg {
1482 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ARG }
1483 fn cast(syntax: SyntaxNode) -> Option<Self> {
1484 if Self::can_cast(syntax.kind()) {
1485 Some(Self { syntax })
1490 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1492 impl AstNode for AssocTypeArg {
1493 fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_TYPE_ARG }
1494 fn cast(syntax: SyntaxNode) -> Option<Self> {
1495 if Self::can_cast(syntax.kind()) {
1496 Some(Self { syntax })
1501 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1503 impl AstNode for LifetimeArg {
1504 fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_ARG }
1505 fn cast(syntax: SyntaxNode) -> Option<Self> {
1506 if Self::can_cast(syntax.kind()) {
1507 Some(Self { syntax })
1512 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1514 impl AstNode for ConstArg {
1515 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_ARG }
1516 fn cast(syntax: SyntaxNode) -> Option<Self> {
1517 if Self::can_cast(syntax.kind()) {
1518 Some(Self { syntax })
1523 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1525 impl AstNode for TypeBoundList {
1526 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND_LIST }
1527 fn cast(syntax: SyntaxNode) -> Option<Self> {
1528 if Self::can_cast(syntax.kind()) {
1529 Some(Self { syntax })
1534 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1536 impl AstNode for MacroCall {
1537 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_CALL }
1538 fn cast(syntax: SyntaxNode) -> Option<Self> {
1539 if Self::can_cast(syntax.kind()) {
1540 Some(Self { syntax })
1545 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1547 impl AstNode for Attr {
1548 fn can_cast(kind: SyntaxKind) -> bool { kind == ATTR }
1549 fn cast(syntax: SyntaxNode) -> Option<Self> {
1550 if Self::can_cast(syntax.kind()) {
1551 Some(Self { syntax })
1556 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1558 impl AstNode for TokenTree {
1559 fn can_cast(kind: SyntaxKind) -> bool { kind == TOKEN_TREE }
1560 fn cast(syntax: SyntaxNode) -> Option<Self> {
1561 if Self::can_cast(syntax.kind()) {
1562 Some(Self { syntax })
1567 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1569 impl AstNode for MacroItems {
1570 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_ITEMS }
1571 fn cast(syntax: SyntaxNode) -> Option<Self> {
1572 if Self::can_cast(syntax.kind()) {
1573 Some(Self { syntax })
1578 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1580 impl AstNode for MacroStmts {
1581 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_STMTS }
1582 fn cast(syntax: SyntaxNode) -> Option<Self> {
1583 if Self::can_cast(syntax.kind()) {
1584 Some(Self { syntax })
1589 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1591 impl AstNode for SourceFile {
1592 fn can_cast(kind: SyntaxKind) -> bool { kind == SOURCE_FILE }
1593 fn cast(syntax: SyntaxNode) -> Option<Self> {
1594 if Self::can_cast(syntax.kind()) {
1595 Some(Self { syntax })
1600 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1602 impl AstNode for Const {
1603 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST }
1604 fn cast(syntax: SyntaxNode) -> Option<Self> {
1605 if Self::can_cast(syntax.kind()) {
1606 Some(Self { syntax })
1611 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1613 impl AstNode for Enum {
1614 fn can_cast(kind: SyntaxKind) -> bool { kind == ENUM }
1615 fn cast(syntax: SyntaxNode) -> Option<Self> {
1616 if Self::can_cast(syntax.kind()) {
1617 Some(Self { syntax })
1622 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1624 impl AstNode for ExternBlock {
1625 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_BLOCK }
1626 fn cast(syntax: SyntaxNode) -> Option<Self> {
1627 if Self::can_cast(syntax.kind()) {
1628 Some(Self { syntax })
1633 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1635 impl AstNode for ExternCrate {
1636 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_CRATE }
1637 fn cast(syntax: SyntaxNode) -> Option<Self> {
1638 if Self::can_cast(syntax.kind()) {
1639 Some(Self { syntax })
1644 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1646 impl AstNode for Fn {
1647 fn can_cast(kind: SyntaxKind) -> bool { kind == FN }
1648 fn cast(syntax: SyntaxNode) -> Option<Self> {
1649 if Self::can_cast(syntax.kind()) {
1650 Some(Self { syntax })
1655 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1657 impl AstNode for Impl {
1658 fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL }
1659 fn cast(syntax: SyntaxNode) -> Option<Self> {
1660 if Self::can_cast(syntax.kind()) {
1661 Some(Self { syntax })
1666 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1668 impl AstNode for Module {
1669 fn can_cast(kind: SyntaxKind) -> bool { kind == MODULE }
1670 fn cast(syntax: SyntaxNode) -> Option<Self> {
1671 if Self::can_cast(syntax.kind()) {
1672 Some(Self { syntax })
1677 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1679 impl AstNode for Static {
1680 fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC }
1681 fn cast(syntax: SyntaxNode) -> Option<Self> {
1682 if Self::can_cast(syntax.kind()) {
1683 Some(Self { syntax })
1688 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1690 impl AstNode for Struct {
1691 fn can_cast(kind: SyntaxKind) -> bool { kind == STRUCT }
1692 fn cast(syntax: SyntaxNode) -> Option<Self> {
1693 if Self::can_cast(syntax.kind()) {
1694 Some(Self { syntax })
1699 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1701 impl AstNode for Trait {
1702 fn can_cast(kind: SyntaxKind) -> bool { kind == TRAIT }
1703 fn cast(syntax: SyntaxNode) -> Option<Self> {
1704 if Self::can_cast(syntax.kind()) {
1705 Some(Self { syntax })
1710 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1712 impl AstNode for TypeAlias {
1713 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_ALIAS }
1714 fn cast(syntax: SyntaxNode) -> Option<Self> {
1715 if Self::can_cast(syntax.kind()) {
1716 Some(Self { syntax })
1721 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1723 impl AstNode for Union {
1724 fn can_cast(kind: SyntaxKind) -> bool { kind == UNION }
1725 fn cast(syntax: SyntaxNode) -> Option<Self> {
1726 if Self::can_cast(syntax.kind()) {
1727 Some(Self { syntax })
1732 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1734 impl AstNode for Use {
1735 fn can_cast(kind: SyntaxKind) -> bool { kind == USE }
1736 fn cast(syntax: SyntaxNode) -> Option<Self> {
1737 if Self::can_cast(syntax.kind()) {
1738 Some(Self { syntax })
1743 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1745 impl AstNode for Visibility {
1746 fn can_cast(kind: SyntaxKind) -> bool { kind == VISIBILITY }
1747 fn cast(syntax: SyntaxNode) -> Option<Self> {
1748 if Self::can_cast(syntax.kind()) {
1749 Some(Self { syntax })
1754 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1756 impl AstNode for ItemList {
1757 fn can_cast(kind: SyntaxKind) -> bool { kind == ITEM_LIST }
1758 fn cast(syntax: SyntaxNode) -> Option<Self> {
1759 if Self::can_cast(syntax.kind()) {
1760 Some(Self { syntax })
1765 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1767 impl AstNode for Rename {
1768 fn can_cast(kind: SyntaxKind) -> bool { kind == RENAME }
1769 fn cast(syntax: SyntaxNode) -> Option<Self> {
1770 if Self::can_cast(syntax.kind()) {
1771 Some(Self { syntax })
1776 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1778 impl AstNode for UseTree {
1779 fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE }
1780 fn cast(syntax: SyntaxNode) -> Option<Self> {
1781 if Self::can_cast(syntax.kind()) {
1782 Some(Self { syntax })
1787 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1789 impl AstNode for UseTreeList {
1790 fn can_cast(kind: SyntaxKind) -> bool { kind == USE_TREE_LIST }
1791 fn cast(syntax: SyntaxNode) -> Option<Self> {
1792 if Self::can_cast(syntax.kind()) {
1793 Some(Self { syntax })
1798 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1800 impl AstNode for Abi {
1801 fn can_cast(kind: SyntaxKind) -> bool { kind == ABI }
1802 fn cast(syntax: SyntaxNode) -> Option<Self> {
1803 if Self::can_cast(syntax.kind()) {
1804 Some(Self { syntax })
1809 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1811 impl AstNode for GenericParamList {
1812 fn can_cast(kind: SyntaxKind) -> bool { kind == GENERIC_PARAM_LIST }
1813 fn cast(syntax: SyntaxNode) -> Option<Self> {
1814 if Self::can_cast(syntax.kind()) {
1815 Some(Self { syntax })
1820 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1822 impl AstNode for WhereClause {
1823 fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_CLAUSE }
1824 fn cast(syntax: SyntaxNode) -> Option<Self> {
1825 if Self::can_cast(syntax.kind()) {
1826 Some(Self { syntax })
1831 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1833 impl AstNode for BlockExpr {
1834 fn can_cast(kind: SyntaxKind) -> bool { kind == BLOCK_EXPR }
1835 fn cast(syntax: SyntaxNode) -> Option<Self> {
1836 if Self::can_cast(syntax.kind()) {
1837 Some(Self { syntax })
1842 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1844 impl AstNode for SelfParam {
1845 fn can_cast(kind: SyntaxKind) -> bool { kind == SELF_PARAM }
1846 fn cast(syntax: SyntaxNode) -> Option<Self> {
1847 if Self::can_cast(syntax.kind()) {
1848 Some(Self { syntax })
1853 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1855 impl AstNode for Param {
1856 fn can_cast(kind: SyntaxKind) -> bool { kind == PARAM }
1857 fn cast(syntax: SyntaxNode) -> Option<Self> {
1858 if Self::can_cast(syntax.kind()) {
1859 Some(Self { syntax })
1864 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1866 impl AstNode for RecordFieldList {
1867 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD_LIST }
1868 fn cast(syntax: SyntaxNode) -> Option<Self> {
1869 if Self::can_cast(syntax.kind()) {
1870 Some(Self { syntax })
1875 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1877 impl AstNode for TupleFieldList {
1878 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD_LIST }
1879 fn cast(syntax: SyntaxNode) -> Option<Self> {
1880 if Self::can_cast(syntax.kind()) {
1881 Some(Self { syntax })
1886 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1888 impl AstNode for RecordField {
1889 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_FIELD }
1890 fn cast(syntax: SyntaxNode) -> Option<Self> {
1891 if Self::can_cast(syntax.kind()) {
1892 Some(Self { syntax })
1897 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1899 impl AstNode for TupleField {
1900 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_FIELD }
1901 fn cast(syntax: SyntaxNode) -> Option<Self> {
1902 if Self::can_cast(syntax.kind()) {
1903 Some(Self { syntax })
1908 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1910 impl AstNode for VariantList {
1911 fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT_LIST }
1912 fn cast(syntax: SyntaxNode) -> Option<Self> {
1913 if Self::can_cast(syntax.kind()) {
1914 Some(Self { syntax })
1919 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1921 impl AstNode for Variant {
1922 fn can_cast(kind: SyntaxKind) -> bool { kind == VARIANT }
1923 fn cast(syntax: SyntaxNode) -> Option<Self> {
1924 if Self::can_cast(syntax.kind()) {
1925 Some(Self { syntax })
1930 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1932 impl AstNode for AssocItemList {
1933 fn can_cast(kind: SyntaxKind) -> bool { kind == ASSOC_ITEM_LIST }
1934 fn cast(syntax: SyntaxNode) -> Option<Self> {
1935 if Self::can_cast(syntax.kind()) {
1936 Some(Self { syntax })
1941 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1943 impl AstNode for ExternItemList {
1944 fn can_cast(kind: SyntaxKind) -> bool { kind == EXTERN_ITEM_LIST }
1945 fn cast(syntax: SyntaxNode) -> Option<Self> {
1946 if Self::can_cast(syntax.kind()) {
1947 Some(Self { syntax })
1952 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1954 impl AstNode for ConstParam {
1955 fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_PARAM }
1956 fn cast(syntax: SyntaxNode) -> Option<Self> {
1957 if Self::can_cast(syntax.kind()) {
1958 Some(Self { syntax })
1963 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1965 impl AstNode for LifetimeParam {
1966 fn can_cast(kind: SyntaxKind) -> bool { kind == LIFETIME_PARAM }
1967 fn cast(syntax: SyntaxNode) -> Option<Self> {
1968 if Self::can_cast(syntax.kind()) {
1969 Some(Self { syntax })
1974 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1976 impl AstNode for TypeParam {
1977 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_PARAM }
1978 fn cast(syntax: SyntaxNode) -> Option<Self> {
1979 if Self::can_cast(syntax.kind()) {
1980 Some(Self { syntax })
1985 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1987 impl AstNode for WherePred {
1988 fn can_cast(kind: SyntaxKind) -> bool { kind == WHERE_PRED }
1989 fn cast(syntax: SyntaxNode) -> Option<Self> {
1990 if Self::can_cast(syntax.kind()) {
1991 Some(Self { syntax })
1996 fn syntax(&self) -> &SyntaxNode { &self.syntax }
1998 impl AstNode for Literal {
1999 fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL }
2000 fn cast(syntax: SyntaxNode) -> Option<Self> {
2001 if Self::can_cast(syntax.kind()) {
2002 Some(Self { syntax })
2007 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2009 impl AstNode for ExprStmt {
2010 fn can_cast(kind: SyntaxKind) -> bool { kind == EXPR_STMT }
2011 fn cast(syntax: SyntaxNode) -> Option<Self> {
2012 if Self::can_cast(syntax.kind()) {
2013 Some(Self { syntax })
2018 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2020 impl AstNode for LetStmt {
2021 fn can_cast(kind: SyntaxKind) -> bool { kind == LET_STMT }
2022 fn cast(syntax: SyntaxNode) -> Option<Self> {
2023 if Self::can_cast(syntax.kind()) {
2024 Some(Self { syntax })
2029 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2031 impl AstNode for ArrayExpr {
2032 fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_EXPR }
2033 fn cast(syntax: SyntaxNode) -> Option<Self> {
2034 if Self::can_cast(syntax.kind()) {
2035 Some(Self { syntax })
2040 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2042 impl AstNode for AwaitExpr {
2043 fn can_cast(kind: SyntaxKind) -> bool { kind == AWAIT_EXPR }
2044 fn cast(syntax: SyntaxNode) -> Option<Self> {
2045 if Self::can_cast(syntax.kind()) {
2046 Some(Self { syntax })
2051 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2053 impl AstNode for BinExpr {
2054 fn can_cast(kind: SyntaxKind) -> bool { kind == BIN_EXPR }
2055 fn cast(syntax: SyntaxNode) -> Option<Self> {
2056 if Self::can_cast(syntax.kind()) {
2057 Some(Self { syntax })
2062 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2064 impl AstNode for BoxExpr {
2065 fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_EXPR }
2066 fn cast(syntax: SyntaxNode) -> Option<Self> {
2067 if Self::can_cast(syntax.kind()) {
2068 Some(Self { syntax })
2073 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2075 impl AstNode for BreakExpr {
2076 fn can_cast(kind: SyntaxKind) -> bool { kind == BREAK_EXPR }
2077 fn cast(syntax: SyntaxNode) -> Option<Self> {
2078 if Self::can_cast(syntax.kind()) {
2079 Some(Self { syntax })
2084 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2086 impl AstNode for CallExpr {
2087 fn can_cast(kind: SyntaxKind) -> bool { kind == CALL_EXPR }
2088 fn cast(syntax: SyntaxNode) -> Option<Self> {
2089 if Self::can_cast(syntax.kind()) {
2090 Some(Self { syntax })
2095 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2097 impl AstNode for CastExpr {
2098 fn can_cast(kind: SyntaxKind) -> bool { kind == CAST_EXPR }
2099 fn cast(syntax: SyntaxNode) -> Option<Self> {
2100 if Self::can_cast(syntax.kind()) {
2101 Some(Self { syntax })
2106 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2108 impl AstNode for ClosureExpr {
2109 fn can_cast(kind: SyntaxKind) -> bool { kind == CLOSURE_EXPR }
2110 fn cast(syntax: SyntaxNode) -> Option<Self> {
2111 if Self::can_cast(syntax.kind()) {
2112 Some(Self { syntax })
2117 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2119 impl AstNode for ContinueExpr {
2120 fn can_cast(kind: SyntaxKind) -> bool { kind == CONTINUE_EXPR }
2121 fn cast(syntax: SyntaxNode) -> Option<Self> {
2122 if Self::can_cast(syntax.kind()) {
2123 Some(Self { syntax })
2128 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2130 impl AstNode for EffectExpr {
2131 fn can_cast(kind: SyntaxKind) -> bool { kind == EFFECT_EXPR }
2132 fn cast(syntax: SyntaxNode) -> Option<Self> {
2133 if Self::can_cast(syntax.kind()) {
2134 Some(Self { syntax })
2139 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2141 impl AstNode for FieldExpr {
2142 fn can_cast(kind: SyntaxKind) -> bool { kind == FIELD_EXPR }
2143 fn cast(syntax: SyntaxNode) -> Option<Self> {
2144 if Self::can_cast(syntax.kind()) {
2145 Some(Self { syntax })
2150 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2152 impl AstNode for ForExpr {
2153 fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_EXPR }
2154 fn cast(syntax: SyntaxNode) -> Option<Self> {
2155 if Self::can_cast(syntax.kind()) {
2156 Some(Self { syntax })
2161 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2163 impl AstNode for IfExpr {
2164 fn can_cast(kind: SyntaxKind) -> bool { kind == IF_EXPR }
2165 fn cast(syntax: SyntaxNode) -> Option<Self> {
2166 if Self::can_cast(syntax.kind()) {
2167 Some(Self { syntax })
2172 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2174 impl AstNode for IndexExpr {
2175 fn can_cast(kind: SyntaxKind) -> bool { kind == INDEX_EXPR }
2176 fn cast(syntax: SyntaxNode) -> Option<Self> {
2177 if Self::can_cast(syntax.kind()) {
2178 Some(Self { syntax })
2183 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2185 impl AstNode for LoopExpr {
2186 fn can_cast(kind: SyntaxKind) -> bool { kind == LOOP_EXPR }
2187 fn cast(syntax: SyntaxNode) -> Option<Self> {
2188 if Self::can_cast(syntax.kind()) {
2189 Some(Self { syntax })
2194 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2196 impl AstNode for MatchExpr {
2197 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_EXPR }
2198 fn cast(syntax: SyntaxNode) -> Option<Self> {
2199 if Self::can_cast(syntax.kind()) {
2200 Some(Self { syntax })
2205 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2207 impl AstNode for MethodCallExpr {
2208 fn can_cast(kind: SyntaxKind) -> bool { kind == METHOD_CALL_EXPR }
2209 fn cast(syntax: SyntaxNode) -> Option<Self> {
2210 if Self::can_cast(syntax.kind()) {
2211 Some(Self { syntax })
2216 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2218 impl AstNode for ParenExpr {
2219 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_EXPR }
2220 fn cast(syntax: SyntaxNode) -> Option<Self> {
2221 if Self::can_cast(syntax.kind()) {
2222 Some(Self { syntax })
2227 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2229 impl AstNode for PathExpr {
2230 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_EXPR }
2231 fn cast(syntax: SyntaxNode) -> Option<Self> {
2232 if Self::can_cast(syntax.kind()) {
2233 Some(Self { syntax })
2238 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2240 impl AstNode for PrefixExpr {
2241 fn can_cast(kind: SyntaxKind) -> bool { kind == PREFIX_EXPR }
2242 fn cast(syntax: SyntaxNode) -> Option<Self> {
2243 if Self::can_cast(syntax.kind()) {
2244 Some(Self { syntax })
2249 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2251 impl AstNode for RangeExpr {
2252 fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_EXPR }
2253 fn cast(syntax: SyntaxNode) -> Option<Self> {
2254 if Self::can_cast(syntax.kind()) {
2255 Some(Self { syntax })
2260 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2262 impl AstNode for RecordExpr {
2263 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR }
2264 fn cast(syntax: SyntaxNode) -> Option<Self> {
2265 if Self::can_cast(syntax.kind()) {
2266 Some(Self { syntax })
2271 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2273 impl AstNode for RefExpr {
2274 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_EXPR }
2275 fn cast(syntax: SyntaxNode) -> Option<Self> {
2276 if Self::can_cast(syntax.kind()) {
2277 Some(Self { syntax })
2282 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2284 impl AstNode for ReturnExpr {
2285 fn can_cast(kind: SyntaxKind) -> bool { kind == RETURN_EXPR }
2286 fn cast(syntax: SyntaxNode) -> Option<Self> {
2287 if Self::can_cast(syntax.kind()) {
2288 Some(Self { syntax })
2293 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2295 impl AstNode for TryExpr {
2296 fn can_cast(kind: SyntaxKind) -> bool { kind == TRY_EXPR }
2297 fn cast(syntax: SyntaxNode) -> Option<Self> {
2298 if Self::can_cast(syntax.kind()) {
2299 Some(Self { syntax })
2304 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2306 impl AstNode for TupleExpr {
2307 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_EXPR }
2308 fn cast(syntax: SyntaxNode) -> Option<Self> {
2309 if Self::can_cast(syntax.kind()) {
2310 Some(Self { syntax })
2315 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2317 impl AstNode for WhileExpr {
2318 fn can_cast(kind: SyntaxKind) -> bool { kind == WHILE_EXPR }
2319 fn cast(syntax: SyntaxNode) -> Option<Self> {
2320 if Self::can_cast(syntax.kind()) {
2321 Some(Self { syntax })
2326 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2328 impl AstNode for Label {
2329 fn can_cast(kind: SyntaxKind) -> bool { kind == LABEL }
2330 fn cast(syntax: SyntaxNode) -> Option<Self> {
2331 if Self::can_cast(syntax.kind()) {
2332 Some(Self { syntax })
2337 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2339 impl AstNode for RecordExprFieldList {
2340 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD_LIST }
2341 fn cast(syntax: SyntaxNode) -> Option<Self> {
2342 if Self::can_cast(syntax.kind()) {
2343 Some(Self { syntax })
2348 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2350 impl AstNode for RecordExprField {
2351 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_EXPR_FIELD }
2352 fn cast(syntax: SyntaxNode) -> Option<Self> {
2353 if Self::can_cast(syntax.kind()) {
2354 Some(Self { syntax })
2359 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2361 impl AstNode for ArgList {
2362 fn can_cast(kind: SyntaxKind) -> bool { kind == ARG_LIST }
2363 fn cast(syntax: SyntaxNode) -> Option<Self> {
2364 if Self::can_cast(syntax.kind()) {
2365 Some(Self { syntax })
2370 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2372 impl AstNode for Condition {
2373 fn can_cast(kind: SyntaxKind) -> bool { kind == CONDITION }
2374 fn cast(syntax: SyntaxNode) -> Option<Self> {
2375 if Self::can_cast(syntax.kind()) {
2376 Some(Self { syntax })
2381 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2383 impl AstNode for MatchArmList {
2384 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM_LIST }
2385 fn cast(syntax: SyntaxNode) -> Option<Self> {
2386 if Self::can_cast(syntax.kind()) {
2387 Some(Self { syntax })
2392 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2394 impl AstNode for MatchArm {
2395 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_ARM }
2396 fn cast(syntax: SyntaxNode) -> Option<Self> {
2397 if Self::can_cast(syntax.kind()) {
2398 Some(Self { syntax })
2403 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2405 impl AstNode for MatchGuard {
2406 fn can_cast(kind: SyntaxKind) -> bool { kind == MATCH_GUARD }
2407 fn cast(syntax: SyntaxNode) -> Option<Self> {
2408 if Self::can_cast(syntax.kind()) {
2409 Some(Self { syntax })
2414 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2416 impl AstNode for ArrayType {
2417 fn can_cast(kind: SyntaxKind) -> bool { kind == ARRAY_TYPE }
2418 fn cast(syntax: SyntaxNode) -> Option<Self> {
2419 if Self::can_cast(syntax.kind()) {
2420 Some(Self { syntax })
2425 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2427 impl AstNode for DynTraitType {
2428 fn can_cast(kind: SyntaxKind) -> bool { kind == DYN_TRAIT_TYPE }
2429 fn cast(syntax: SyntaxNode) -> Option<Self> {
2430 if Self::can_cast(syntax.kind()) {
2431 Some(Self { syntax })
2436 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2438 impl AstNode for FnPtrType {
2439 fn can_cast(kind: SyntaxKind) -> bool { kind == FN_PTR_TYPE }
2440 fn cast(syntax: SyntaxNode) -> Option<Self> {
2441 if Self::can_cast(syntax.kind()) {
2442 Some(Self { syntax })
2447 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2449 impl AstNode for ForType {
2450 fn can_cast(kind: SyntaxKind) -> bool { kind == FOR_TYPE }
2451 fn cast(syntax: SyntaxNode) -> Option<Self> {
2452 if Self::can_cast(syntax.kind()) {
2453 Some(Self { syntax })
2458 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2460 impl AstNode for ImplTraitType {
2461 fn can_cast(kind: SyntaxKind) -> bool { kind == IMPL_TRAIT_TYPE }
2462 fn cast(syntax: SyntaxNode) -> Option<Self> {
2463 if Self::can_cast(syntax.kind()) {
2464 Some(Self { syntax })
2469 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2471 impl AstNode for InferType {
2472 fn can_cast(kind: SyntaxKind) -> bool { kind == INFER_TYPE }
2473 fn cast(syntax: SyntaxNode) -> Option<Self> {
2474 if Self::can_cast(syntax.kind()) {
2475 Some(Self { syntax })
2480 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2482 impl AstNode for NeverType {
2483 fn can_cast(kind: SyntaxKind) -> bool { kind == NEVER_TYPE }
2484 fn cast(syntax: SyntaxNode) -> Option<Self> {
2485 if Self::can_cast(syntax.kind()) {
2486 Some(Self { syntax })
2491 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2493 impl AstNode for ParenType {
2494 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_TYPE }
2495 fn cast(syntax: SyntaxNode) -> Option<Self> {
2496 if Self::can_cast(syntax.kind()) {
2497 Some(Self { syntax })
2502 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2504 impl AstNode for PtrType {
2505 fn can_cast(kind: SyntaxKind) -> bool { kind == PTR_TYPE }
2506 fn cast(syntax: SyntaxNode) -> Option<Self> {
2507 if Self::can_cast(syntax.kind()) {
2508 Some(Self { syntax })
2513 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2515 impl AstNode for RefType {
2516 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_TYPE }
2517 fn cast(syntax: SyntaxNode) -> Option<Self> {
2518 if Self::can_cast(syntax.kind()) {
2519 Some(Self { syntax })
2524 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2526 impl AstNode for SliceType {
2527 fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_TYPE }
2528 fn cast(syntax: SyntaxNode) -> Option<Self> {
2529 if Self::can_cast(syntax.kind()) {
2530 Some(Self { syntax })
2535 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2537 impl AstNode for TupleType {
2538 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_TYPE }
2539 fn cast(syntax: SyntaxNode) -> Option<Self> {
2540 if Self::can_cast(syntax.kind()) {
2541 Some(Self { syntax })
2546 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2548 impl AstNode for TypeBound {
2549 fn can_cast(kind: SyntaxKind) -> bool { kind == TYPE_BOUND }
2550 fn cast(syntax: SyntaxNode) -> Option<Self> {
2551 if Self::can_cast(syntax.kind()) {
2552 Some(Self { syntax })
2557 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2559 impl AstNode for IdentPat {
2560 fn can_cast(kind: SyntaxKind) -> bool { kind == IDENT_PAT }
2561 fn cast(syntax: SyntaxNode) -> Option<Self> {
2562 if Self::can_cast(syntax.kind()) {
2563 Some(Self { syntax })
2568 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2570 impl AstNode for BoxPat {
2571 fn can_cast(kind: SyntaxKind) -> bool { kind == BOX_PAT }
2572 fn cast(syntax: SyntaxNode) -> Option<Self> {
2573 if Self::can_cast(syntax.kind()) {
2574 Some(Self { syntax })
2579 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2581 impl AstNode for RestPat {
2582 fn can_cast(kind: SyntaxKind) -> bool { kind == REST_PAT }
2583 fn cast(syntax: SyntaxNode) -> Option<Self> {
2584 if Self::can_cast(syntax.kind()) {
2585 Some(Self { syntax })
2590 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2592 impl AstNode for LiteralPat {
2593 fn can_cast(kind: SyntaxKind) -> bool { kind == LITERAL_PAT }
2594 fn cast(syntax: SyntaxNode) -> Option<Self> {
2595 if Self::can_cast(syntax.kind()) {
2596 Some(Self { syntax })
2601 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2603 impl AstNode for MacroPat {
2604 fn can_cast(kind: SyntaxKind) -> bool { kind == MACRO_PAT }
2605 fn cast(syntax: SyntaxNode) -> Option<Self> {
2606 if Self::can_cast(syntax.kind()) {
2607 Some(Self { syntax })
2612 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2614 impl AstNode for OrPat {
2615 fn can_cast(kind: SyntaxKind) -> bool { kind == OR_PAT }
2616 fn cast(syntax: SyntaxNode) -> Option<Self> {
2617 if Self::can_cast(syntax.kind()) {
2618 Some(Self { syntax })
2623 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2625 impl AstNode for ParenPat {
2626 fn can_cast(kind: SyntaxKind) -> bool { kind == PAREN_PAT }
2627 fn cast(syntax: SyntaxNode) -> Option<Self> {
2628 if Self::can_cast(syntax.kind()) {
2629 Some(Self { syntax })
2634 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2636 impl AstNode for PathPat {
2637 fn can_cast(kind: SyntaxKind) -> bool { kind == PATH_PAT }
2638 fn cast(syntax: SyntaxNode) -> Option<Self> {
2639 if Self::can_cast(syntax.kind()) {
2640 Some(Self { syntax })
2645 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2647 impl AstNode for WildcardPat {
2648 fn can_cast(kind: SyntaxKind) -> bool { kind == WILDCARD_PAT }
2649 fn cast(syntax: SyntaxNode) -> Option<Self> {
2650 if Self::can_cast(syntax.kind()) {
2651 Some(Self { syntax })
2656 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2658 impl AstNode for RangePat {
2659 fn can_cast(kind: SyntaxKind) -> bool { kind == RANGE_PAT }
2660 fn cast(syntax: SyntaxNode) -> Option<Self> {
2661 if Self::can_cast(syntax.kind()) {
2662 Some(Self { syntax })
2667 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2669 impl AstNode for RecordPat {
2670 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT }
2671 fn cast(syntax: SyntaxNode) -> Option<Self> {
2672 if Self::can_cast(syntax.kind()) {
2673 Some(Self { syntax })
2678 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2680 impl AstNode for RefPat {
2681 fn can_cast(kind: SyntaxKind) -> bool { kind == REF_PAT }
2682 fn cast(syntax: SyntaxNode) -> Option<Self> {
2683 if Self::can_cast(syntax.kind()) {
2684 Some(Self { syntax })
2689 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2691 impl AstNode for SlicePat {
2692 fn can_cast(kind: SyntaxKind) -> bool { kind == SLICE_PAT }
2693 fn cast(syntax: SyntaxNode) -> Option<Self> {
2694 if Self::can_cast(syntax.kind()) {
2695 Some(Self { syntax })
2700 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2702 impl AstNode for TuplePat {
2703 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_PAT }
2704 fn cast(syntax: SyntaxNode) -> Option<Self> {
2705 if Self::can_cast(syntax.kind()) {
2706 Some(Self { syntax })
2711 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2713 impl AstNode for TupleStructPat {
2714 fn can_cast(kind: SyntaxKind) -> bool { kind == TUPLE_STRUCT_PAT }
2715 fn cast(syntax: SyntaxNode) -> Option<Self> {
2716 if Self::can_cast(syntax.kind()) {
2717 Some(Self { syntax })
2722 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2724 impl AstNode for RecordPatFieldList {
2725 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD_LIST }
2726 fn cast(syntax: SyntaxNode) -> Option<Self> {
2727 if Self::can_cast(syntax.kind()) {
2728 Some(Self { syntax })
2733 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2735 impl AstNode for RecordPatField {
2736 fn can_cast(kind: SyntaxKind) -> bool { kind == RECORD_PAT_FIELD }
2737 fn cast(syntax: SyntaxNode) -> Option<Self> {
2738 if Self::can_cast(syntax.kind()) {
2739 Some(Self { syntax })
2744 fn syntax(&self) -> &SyntaxNode { &self.syntax }
2746 impl From<TypeArg> for GenericArg {
2747 fn from(node: TypeArg) -> GenericArg { GenericArg::TypeArg(node) }
2749 impl From<AssocTypeArg> for GenericArg {
2750 fn from(node: AssocTypeArg) -> GenericArg { GenericArg::AssocTypeArg(node) }
2752 impl From<LifetimeArg> for GenericArg {
2753 fn from(node: LifetimeArg) -> GenericArg { GenericArg::LifetimeArg(node) }
2755 impl From<ConstArg> for GenericArg {
2756 fn from(node: ConstArg) -> GenericArg { GenericArg::ConstArg(node) }
2758 impl AstNode for GenericArg {
2759 fn can_cast(kind: SyntaxKind) -> bool {
2761 TYPE_ARG | ASSOC_TYPE_ARG | LIFETIME_ARG | CONST_ARG => true,
2765 fn cast(syntax: SyntaxNode) -> Option<Self> {
2766 let res = match syntax.kind() {
2767 TYPE_ARG => GenericArg::TypeArg(TypeArg { syntax }),
2768 ASSOC_TYPE_ARG => GenericArg::AssocTypeArg(AssocTypeArg { syntax }),
2769 LIFETIME_ARG => GenericArg::LifetimeArg(LifetimeArg { syntax }),
2770 CONST_ARG => GenericArg::ConstArg(ConstArg { syntax }),
2775 fn syntax(&self) -> &SyntaxNode {
2777 GenericArg::TypeArg(it) => &it.syntax,
2778 GenericArg::AssocTypeArg(it) => &it.syntax,
2779 GenericArg::LifetimeArg(it) => &it.syntax,
2780 GenericArg::ConstArg(it) => &it.syntax,
2784 impl From<ArrayType> for Type {
2785 fn from(node: ArrayType) -> Type { Type::ArrayType(node) }
2787 impl From<DynTraitType> for Type {
2788 fn from(node: DynTraitType) -> Type { Type::DynTraitType(node) }
2790 impl From<FnPtrType> for Type {
2791 fn from(node: FnPtrType) -> Type { Type::FnPtrType(node) }
2793 impl From<ForType> for Type {
2794 fn from(node: ForType) -> Type { Type::ForType(node) }
2796 impl From<ImplTraitType> for Type {
2797 fn from(node: ImplTraitType) -> Type { Type::ImplTraitType(node) }
2799 impl From<InferType> for Type {
2800 fn from(node: InferType) -> Type { Type::InferType(node) }
2802 impl From<NeverType> for Type {
2803 fn from(node: NeverType) -> Type { Type::NeverType(node) }
2805 impl From<ParenType> for Type {
2806 fn from(node: ParenType) -> Type { Type::ParenType(node) }
2808 impl From<PathType> for Type {
2809 fn from(node: PathType) -> Type { Type::PathType(node) }
2811 impl From<PtrType> for Type {
2812 fn from(node: PtrType) -> Type { Type::PtrType(node) }
2814 impl From<RefType> for Type {
2815 fn from(node: RefType) -> Type { Type::RefType(node) }
2817 impl From<SliceType> for Type {
2818 fn from(node: SliceType) -> Type { Type::SliceType(node) }
2820 impl From<TupleType> for Type {
2821 fn from(node: TupleType) -> Type { Type::TupleType(node) }
2823 impl AstNode for Type {
2824 fn can_cast(kind: SyntaxKind) -> bool {
2826 ARRAY_TYPE | DYN_TRAIT_TYPE | FN_PTR_TYPE | FOR_TYPE | IMPL_TRAIT_TYPE | INFER_TYPE
2827 | NEVER_TYPE | PAREN_TYPE | PATH_TYPE | PTR_TYPE | REF_TYPE | SLICE_TYPE
2828 | TUPLE_TYPE => true,
2832 fn cast(syntax: SyntaxNode) -> Option<Self> {
2833 let res = match syntax.kind() {
2834 ARRAY_TYPE => Type::ArrayType(ArrayType { syntax }),
2835 DYN_TRAIT_TYPE => Type::DynTraitType(DynTraitType { syntax }),
2836 FN_PTR_TYPE => Type::FnPtrType(FnPtrType { syntax }),
2837 FOR_TYPE => Type::ForType(ForType { syntax }),
2838 IMPL_TRAIT_TYPE => Type::ImplTraitType(ImplTraitType { syntax }),
2839 INFER_TYPE => Type::InferType(InferType { syntax }),
2840 NEVER_TYPE => Type::NeverType(NeverType { syntax }),
2841 PAREN_TYPE => Type::ParenType(ParenType { syntax }),
2842 PATH_TYPE => Type::PathType(PathType { syntax }),
2843 PTR_TYPE => Type::PtrType(PtrType { syntax }),
2844 REF_TYPE => Type::RefType(RefType { syntax }),
2845 SLICE_TYPE => Type::SliceType(SliceType { syntax }),
2846 TUPLE_TYPE => Type::TupleType(TupleType { syntax }),
2851 fn syntax(&self) -> &SyntaxNode {
2853 Type::ArrayType(it) => &it.syntax,
2854 Type::DynTraitType(it) => &it.syntax,
2855 Type::FnPtrType(it) => &it.syntax,
2856 Type::ForType(it) => &it.syntax,
2857 Type::ImplTraitType(it) => &it.syntax,
2858 Type::InferType(it) => &it.syntax,
2859 Type::NeverType(it) => &it.syntax,
2860 Type::ParenType(it) => &it.syntax,
2861 Type::PathType(it) => &it.syntax,
2862 Type::PtrType(it) => &it.syntax,
2863 Type::RefType(it) => &it.syntax,
2864 Type::SliceType(it) => &it.syntax,
2865 Type::TupleType(it) => &it.syntax,
2869 impl From<ArrayExpr> for Expr {
2870 fn from(node: ArrayExpr) -> Expr { Expr::ArrayExpr(node) }
2872 impl From<AwaitExpr> for Expr {
2873 fn from(node: AwaitExpr) -> Expr { Expr::AwaitExpr(node) }
2875 impl From<BinExpr> for Expr {
2876 fn from(node: BinExpr) -> Expr { Expr::BinExpr(node) }
2878 impl From<BlockExpr> for Expr {
2879 fn from(node: BlockExpr) -> Expr { Expr::BlockExpr(node) }
2881 impl From<BoxExpr> for Expr {
2882 fn from(node: BoxExpr) -> Expr { Expr::BoxExpr(node) }
2884 impl From<BreakExpr> for Expr {
2885 fn from(node: BreakExpr) -> Expr { Expr::BreakExpr(node) }
2887 impl From<CallExpr> for Expr {
2888 fn from(node: CallExpr) -> Expr { Expr::CallExpr(node) }
2890 impl From<CastExpr> for Expr {
2891 fn from(node: CastExpr) -> Expr { Expr::CastExpr(node) }
2893 impl From<ClosureExpr> for Expr {
2894 fn from(node: ClosureExpr) -> Expr { Expr::ClosureExpr(node) }
2896 impl From<ContinueExpr> for Expr {
2897 fn from(node: ContinueExpr) -> Expr { Expr::ContinueExpr(node) }
2899 impl From<EffectExpr> for Expr {
2900 fn from(node: EffectExpr) -> Expr { Expr::EffectExpr(node) }
2902 impl From<FieldExpr> for Expr {
2903 fn from(node: FieldExpr) -> Expr { Expr::FieldExpr(node) }
2905 impl From<ForExpr> for Expr {
2906 fn from(node: ForExpr) -> Expr { Expr::ForExpr(node) }
2908 impl From<IfExpr> for Expr {
2909 fn from(node: IfExpr) -> Expr { Expr::IfExpr(node) }
2911 impl From<IndexExpr> for Expr {
2912 fn from(node: IndexExpr) -> Expr { Expr::IndexExpr(node) }
2914 impl From<Literal> for Expr {
2915 fn from(node: Literal) -> Expr { Expr::Literal(node) }
2917 impl From<LoopExpr> for Expr {
2918 fn from(node: LoopExpr) -> Expr { Expr::LoopExpr(node) }
2920 impl From<MacroCall> for Expr {
2921 fn from(node: MacroCall) -> Expr { Expr::MacroCall(node) }
2923 impl From<MatchExpr> for Expr {
2924 fn from(node: MatchExpr) -> Expr { Expr::MatchExpr(node) }
2926 impl From<MethodCallExpr> for Expr {
2927 fn from(node: MethodCallExpr) -> Expr { Expr::MethodCallExpr(node) }
2929 impl From<ParenExpr> for Expr {
2930 fn from(node: ParenExpr) -> Expr { Expr::ParenExpr(node) }
2932 impl From<PathExpr> for Expr {
2933 fn from(node: PathExpr) -> Expr { Expr::PathExpr(node) }
2935 impl From<PrefixExpr> for Expr {
2936 fn from(node: PrefixExpr) -> Expr { Expr::PrefixExpr(node) }
2938 impl From<RangeExpr> for Expr {
2939 fn from(node: RangeExpr) -> Expr { Expr::RangeExpr(node) }
2941 impl From<RecordExpr> for Expr {
2942 fn from(node: RecordExpr) -> Expr { Expr::RecordExpr(node) }
2944 impl From<RefExpr> for Expr {
2945 fn from(node: RefExpr) -> Expr { Expr::RefExpr(node) }
2947 impl From<ReturnExpr> for Expr {
2948 fn from(node: ReturnExpr) -> Expr { Expr::ReturnExpr(node) }
2950 impl From<TryExpr> for Expr {
2951 fn from(node: TryExpr) -> Expr { Expr::TryExpr(node) }
2953 impl From<TupleExpr> for Expr {
2954 fn from(node: TupleExpr) -> Expr { Expr::TupleExpr(node) }
2956 impl From<WhileExpr> for Expr {
2957 fn from(node: WhileExpr) -> Expr { Expr::WhileExpr(node) }
2959 impl AstNode for Expr {
2960 fn can_cast(kind: SyntaxKind) -> bool {
2962 ARRAY_EXPR | AWAIT_EXPR | BIN_EXPR | BLOCK_EXPR | BOX_EXPR | BREAK_EXPR | CALL_EXPR
2963 | CAST_EXPR | CLOSURE_EXPR | CONTINUE_EXPR | EFFECT_EXPR | FIELD_EXPR | FOR_EXPR
2964 | IF_EXPR | INDEX_EXPR | LITERAL | LOOP_EXPR | MACRO_CALL | MATCH_EXPR
2965 | METHOD_CALL_EXPR | PAREN_EXPR | PATH_EXPR | PREFIX_EXPR | RANGE_EXPR
2966 | RECORD_EXPR | REF_EXPR | RETURN_EXPR | TRY_EXPR | TUPLE_EXPR | WHILE_EXPR => true,
2970 fn cast(syntax: SyntaxNode) -> Option<Self> {
2971 let res = match syntax.kind() {
2972 ARRAY_EXPR => Expr::ArrayExpr(ArrayExpr { syntax }),
2973 AWAIT_EXPR => Expr::AwaitExpr(AwaitExpr { syntax }),
2974 BIN_EXPR => Expr::BinExpr(BinExpr { syntax }),
2975 BLOCK_EXPR => Expr::BlockExpr(BlockExpr { syntax }),
2976 BOX_EXPR => Expr::BoxExpr(BoxExpr { syntax }),
2977 BREAK_EXPR => Expr::BreakExpr(BreakExpr { syntax }),
2978 CALL_EXPR => Expr::CallExpr(CallExpr { syntax }),
2979 CAST_EXPR => Expr::CastExpr(CastExpr { syntax }),
2980 CLOSURE_EXPR => Expr::ClosureExpr(ClosureExpr { syntax }),
2981 CONTINUE_EXPR => Expr::ContinueExpr(ContinueExpr { syntax }),
2982 EFFECT_EXPR => Expr::EffectExpr(EffectExpr { syntax }),
2983 FIELD_EXPR => Expr::FieldExpr(FieldExpr { syntax }),
2984 FOR_EXPR => Expr::ForExpr(ForExpr { syntax }),
2985 IF_EXPR => Expr::IfExpr(IfExpr { syntax }),
2986 INDEX_EXPR => Expr::IndexExpr(IndexExpr { syntax }),
2987 LITERAL => Expr::Literal(Literal { syntax }),
2988 LOOP_EXPR => Expr::LoopExpr(LoopExpr { syntax }),
2989 MACRO_CALL => Expr::MacroCall(MacroCall { syntax }),
2990 MATCH_EXPR => Expr::MatchExpr(MatchExpr { syntax }),
2991 METHOD_CALL_EXPR => Expr::MethodCallExpr(MethodCallExpr { syntax }),
2992 PAREN_EXPR => Expr::ParenExpr(ParenExpr { syntax }),
2993 PATH_EXPR => Expr::PathExpr(PathExpr { syntax }),
2994 PREFIX_EXPR => Expr::PrefixExpr(PrefixExpr { syntax }),
2995 RANGE_EXPR => Expr::RangeExpr(RangeExpr { syntax }),
2996 RECORD_EXPR => Expr::RecordExpr(RecordExpr { syntax }),
2997 REF_EXPR => Expr::RefExpr(RefExpr { syntax }),
2998 RETURN_EXPR => Expr::ReturnExpr(ReturnExpr { syntax }),
2999 TRY_EXPR => Expr::TryExpr(TryExpr { syntax }),
3000 TUPLE_EXPR => Expr::TupleExpr(TupleExpr { syntax }),
3001 WHILE_EXPR => Expr::WhileExpr(WhileExpr { syntax }),
3006 fn syntax(&self) -> &SyntaxNode {
3008 Expr::ArrayExpr(it) => &it.syntax,
3009 Expr::AwaitExpr(it) => &it.syntax,
3010 Expr::BinExpr(it) => &it.syntax,
3011 Expr::BlockExpr(it) => &it.syntax,
3012 Expr::BoxExpr(it) => &it.syntax,
3013 Expr::BreakExpr(it) => &it.syntax,
3014 Expr::CallExpr(it) => &it.syntax,
3015 Expr::CastExpr(it) => &it.syntax,
3016 Expr::ClosureExpr(it) => &it.syntax,
3017 Expr::ContinueExpr(it) => &it.syntax,
3018 Expr::EffectExpr(it) => &it.syntax,
3019 Expr::FieldExpr(it) => &it.syntax,
3020 Expr::ForExpr(it) => &it.syntax,
3021 Expr::IfExpr(it) => &it.syntax,
3022 Expr::IndexExpr(it) => &it.syntax,
3023 Expr::Literal(it) => &it.syntax,
3024 Expr::LoopExpr(it) => &it.syntax,
3025 Expr::MacroCall(it) => &it.syntax,
3026 Expr::MatchExpr(it) => &it.syntax,
3027 Expr::MethodCallExpr(it) => &it.syntax,
3028 Expr::ParenExpr(it) => &it.syntax,
3029 Expr::PathExpr(it) => &it.syntax,
3030 Expr::PrefixExpr(it) => &it.syntax,
3031 Expr::RangeExpr(it) => &it.syntax,
3032 Expr::RecordExpr(it) => &it.syntax,
3033 Expr::RefExpr(it) => &it.syntax,
3034 Expr::ReturnExpr(it) => &it.syntax,
3035 Expr::TryExpr(it) => &it.syntax,
3036 Expr::TupleExpr(it) => &it.syntax,
3037 Expr::WhileExpr(it) => &it.syntax,
3041 impl From<Const> for Item {
3042 fn from(node: Const) -> Item { Item::Const(node) }
3044 impl From<Enum> for Item {
3045 fn from(node: Enum) -> Item { Item::Enum(node) }
3047 impl From<ExternBlock> for Item {
3048 fn from(node: ExternBlock) -> Item { Item::ExternBlock(node) }
3050 impl From<ExternCrate> for Item {
3051 fn from(node: ExternCrate) -> Item { Item::ExternCrate(node) }
3053 impl From<Fn> for Item {
3054 fn from(node: Fn) -> Item { Item::Fn(node) }
3056 impl From<Impl> for Item {
3057 fn from(node: Impl) -> Item { Item::Impl(node) }
3059 impl From<MacroCall> for Item {
3060 fn from(node: MacroCall) -> Item { Item::MacroCall(node) }
3062 impl From<Module> for Item {
3063 fn from(node: Module) -> Item { Item::Module(node) }
3065 impl From<Static> for Item {
3066 fn from(node: Static) -> Item { Item::Static(node) }
3068 impl From<Struct> for Item {
3069 fn from(node: Struct) -> Item { Item::Struct(node) }
3071 impl From<Trait> for Item {
3072 fn from(node: Trait) -> Item { Item::Trait(node) }
3074 impl From<TypeAlias> for Item {
3075 fn from(node: TypeAlias) -> Item { Item::TypeAlias(node) }
3077 impl From<Union> for Item {
3078 fn from(node: Union) -> Item { Item::Union(node) }
3080 impl From<Use> for Item {
3081 fn from(node: Use) -> Item { Item::Use(node) }
3083 impl AstNode for Item {
3084 fn can_cast(kind: SyntaxKind) -> bool {
3086 CONST | ENUM | EXTERN_BLOCK | EXTERN_CRATE | FN | IMPL | MACRO_CALL | MODULE
3087 | STATIC | STRUCT | TRAIT | TYPE_ALIAS | UNION | USE => true,
3091 fn cast(syntax: SyntaxNode) -> Option<Self> {
3092 let res = match syntax.kind() {
3093 CONST => Item::Const(Const { syntax }),
3094 ENUM => Item::Enum(Enum { syntax }),
3095 EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }),
3096 EXTERN_CRATE => Item::ExternCrate(ExternCrate { syntax }),
3097 FN => Item::Fn(Fn { syntax }),
3098 IMPL => Item::Impl(Impl { syntax }),
3099 MACRO_CALL => Item::MacroCall(MacroCall { syntax }),
3100 MODULE => Item::Module(Module { syntax }),
3101 STATIC => Item::Static(Static { syntax }),
3102 STRUCT => Item::Struct(Struct { syntax }),
3103 TRAIT => Item::Trait(Trait { syntax }),
3104 TYPE_ALIAS => Item::TypeAlias(TypeAlias { syntax }),
3105 UNION => Item::Union(Union { syntax }),
3106 USE => Item::Use(Use { syntax }),
3111 fn syntax(&self) -> &SyntaxNode {
3113 Item::Const(it) => &it.syntax,
3114 Item::Enum(it) => &it.syntax,
3115 Item::ExternBlock(it) => &it.syntax,
3116 Item::ExternCrate(it) => &it.syntax,
3117 Item::Fn(it) => &it.syntax,
3118 Item::Impl(it) => &it.syntax,
3119 Item::MacroCall(it) => &it.syntax,
3120 Item::Module(it) => &it.syntax,
3121 Item::Static(it) => &it.syntax,
3122 Item::Struct(it) => &it.syntax,
3123 Item::Trait(it) => &it.syntax,
3124 Item::TypeAlias(it) => &it.syntax,
3125 Item::Union(it) => &it.syntax,
3126 Item::Use(it) => &it.syntax,
3130 impl From<ExprStmt> for Stmt {
3131 fn from(node: ExprStmt) -> Stmt { Stmt::ExprStmt(node) }
3133 impl From<Item> for Stmt {
3134 fn from(node: Item) -> Stmt { Stmt::Item(node) }
3136 impl From<LetStmt> for Stmt {
3137 fn from(node: LetStmt) -> Stmt { Stmt::LetStmt(node) }
3139 impl From<IdentPat> for Pat {
3140 fn from(node: IdentPat) -> Pat { Pat::IdentPat(node) }
3142 impl From<BoxPat> for Pat {
3143 fn from(node: BoxPat) -> Pat { Pat::BoxPat(node) }
3145 impl From<RestPat> for Pat {
3146 fn from(node: RestPat) -> Pat { Pat::RestPat(node) }
3148 impl From<LiteralPat> for Pat {
3149 fn from(node: LiteralPat) -> Pat { Pat::LiteralPat(node) }
3151 impl From<MacroPat> for Pat {
3152 fn from(node: MacroPat) -> Pat { Pat::MacroPat(node) }
3154 impl From<OrPat> for Pat {
3155 fn from(node: OrPat) -> Pat { Pat::OrPat(node) }
3157 impl From<ParenPat> for Pat {
3158 fn from(node: ParenPat) -> Pat { Pat::ParenPat(node) }
3160 impl From<PathPat> for Pat {
3161 fn from(node: PathPat) -> Pat { Pat::PathPat(node) }
3163 impl From<WildcardPat> for Pat {
3164 fn from(node: WildcardPat) -> Pat { Pat::WildcardPat(node) }
3166 impl From<RangePat> for Pat {
3167 fn from(node: RangePat) -> Pat { Pat::RangePat(node) }
3169 impl From<RecordPat> for Pat {
3170 fn from(node: RecordPat) -> Pat { Pat::RecordPat(node) }
3172 impl From<RefPat> for Pat {
3173 fn from(node: RefPat) -> Pat { Pat::RefPat(node) }
3175 impl From<SlicePat> for Pat {
3176 fn from(node: SlicePat) -> Pat { Pat::SlicePat(node) }
3178 impl From<TuplePat> for Pat {
3179 fn from(node: TuplePat) -> Pat { Pat::TuplePat(node) }
3181 impl From<TupleStructPat> for Pat {
3182 fn from(node: TupleStructPat) -> Pat { Pat::TupleStructPat(node) }
3184 impl AstNode for Pat {
3185 fn can_cast(kind: SyntaxKind) -> bool {
3187 IDENT_PAT | BOX_PAT | REST_PAT | LITERAL_PAT | MACRO_PAT | OR_PAT | PAREN_PAT
3188 | PATH_PAT | WILDCARD_PAT | RANGE_PAT | RECORD_PAT | REF_PAT | SLICE_PAT
3189 | TUPLE_PAT | TUPLE_STRUCT_PAT => true,
3193 fn cast(syntax: SyntaxNode) -> Option<Self> {
3194 let res = match syntax.kind() {
3195 IDENT_PAT => Pat::IdentPat(IdentPat { syntax }),
3196 BOX_PAT => Pat::BoxPat(BoxPat { syntax }),
3197 REST_PAT => Pat::RestPat(RestPat { syntax }),
3198 LITERAL_PAT => Pat::LiteralPat(LiteralPat { syntax }),
3199 MACRO_PAT => Pat::MacroPat(MacroPat { syntax }),
3200 OR_PAT => Pat::OrPat(OrPat { syntax }),
3201 PAREN_PAT => Pat::ParenPat(ParenPat { syntax }),
3202 PATH_PAT => Pat::PathPat(PathPat { syntax }),
3203 WILDCARD_PAT => Pat::WildcardPat(WildcardPat { syntax }),
3204 RANGE_PAT => Pat::RangePat(RangePat { syntax }),
3205 RECORD_PAT => Pat::RecordPat(RecordPat { syntax }),
3206 REF_PAT => Pat::RefPat(RefPat { syntax }),
3207 SLICE_PAT => Pat::SlicePat(SlicePat { syntax }),
3208 TUPLE_PAT => Pat::TuplePat(TuplePat { syntax }),
3209 TUPLE_STRUCT_PAT => Pat::TupleStructPat(TupleStructPat { syntax }),
3214 fn syntax(&self) -> &SyntaxNode {
3216 Pat::IdentPat(it) => &it.syntax,
3217 Pat::BoxPat(it) => &it.syntax,
3218 Pat::RestPat(it) => &it.syntax,
3219 Pat::LiteralPat(it) => &it.syntax,
3220 Pat::MacroPat(it) => &it.syntax,
3221 Pat::OrPat(it) => &it.syntax,
3222 Pat::ParenPat(it) => &it.syntax,
3223 Pat::PathPat(it) => &it.syntax,
3224 Pat::WildcardPat(it) => &it.syntax,
3225 Pat::RangePat(it) => &it.syntax,
3226 Pat::RecordPat(it) => &it.syntax,
3227 Pat::RefPat(it) => &it.syntax,
3228 Pat::SlicePat(it) => &it.syntax,
3229 Pat::TuplePat(it) => &it.syntax,
3230 Pat::TupleStructPat(it) => &it.syntax,
3234 impl From<RecordFieldList> for FieldList {
3235 fn from(node: RecordFieldList) -> FieldList { FieldList::RecordFieldList(node) }
3237 impl From<TupleFieldList> for FieldList {
3238 fn from(node: TupleFieldList) -> FieldList { FieldList::TupleFieldList(node) }
3240 impl AstNode for FieldList {
3241 fn can_cast(kind: SyntaxKind) -> bool {
3243 RECORD_FIELD_LIST | TUPLE_FIELD_LIST => true,
3247 fn cast(syntax: SyntaxNode) -> Option<Self> {
3248 let res = match syntax.kind() {
3249 RECORD_FIELD_LIST => FieldList::RecordFieldList(RecordFieldList { syntax }),
3250 TUPLE_FIELD_LIST => FieldList::TupleFieldList(TupleFieldList { syntax }),
3255 fn syntax(&self) -> &SyntaxNode {
3257 FieldList::RecordFieldList(it) => &it.syntax,
3258 FieldList::TupleFieldList(it) => &it.syntax,
3262 impl From<Enum> for AdtDef {
3263 fn from(node: Enum) -> AdtDef { AdtDef::Enum(node) }
3265 impl From<Struct> for AdtDef {
3266 fn from(node: Struct) -> AdtDef { AdtDef::Struct(node) }
3268 impl From<Union> for AdtDef {
3269 fn from(node: Union) -> AdtDef { AdtDef::Union(node) }
3271 impl AstNode for AdtDef {
3272 fn can_cast(kind: SyntaxKind) -> bool {
3274 ENUM | STRUCT | UNION => true,
3278 fn cast(syntax: SyntaxNode) -> Option<Self> {
3279 let res = match syntax.kind() {
3280 ENUM => AdtDef::Enum(Enum { syntax }),
3281 STRUCT => AdtDef::Struct(Struct { syntax }),
3282 UNION => AdtDef::Union(Union { syntax }),
3287 fn syntax(&self) -> &SyntaxNode {
3289 AdtDef::Enum(it) => &it.syntax,
3290 AdtDef::Struct(it) => &it.syntax,
3291 AdtDef::Union(it) => &it.syntax,
3295 impl From<Const> for AssocItem {
3296 fn from(node: Const) -> AssocItem { AssocItem::Const(node) }
3298 impl From<Fn> for AssocItem {
3299 fn from(node: Fn) -> AssocItem { AssocItem::Fn(node) }
3301 impl From<MacroCall> for AssocItem {
3302 fn from(node: MacroCall) -> AssocItem { AssocItem::MacroCall(node) }
3304 impl From<TypeAlias> for AssocItem {
3305 fn from(node: TypeAlias) -> AssocItem { AssocItem::TypeAlias(node) }
3307 impl AstNode for AssocItem {
3308 fn can_cast(kind: SyntaxKind) -> bool {
3310 CONST | FN | MACRO_CALL | TYPE_ALIAS => true,
3314 fn cast(syntax: SyntaxNode) -> Option<Self> {
3315 let res = match syntax.kind() {
3316 CONST => AssocItem::Const(Const { syntax }),
3317 FN => AssocItem::Fn(Fn { syntax }),
3318 MACRO_CALL => AssocItem::MacroCall(MacroCall { syntax }),
3319 TYPE_ALIAS => AssocItem::TypeAlias(TypeAlias { syntax }),
3324 fn syntax(&self) -> &SyntaxNode {
3326 AssocItem::Const(it) => &it.syntax,
3327 AssocItem::Fn(it) => &it.syntax,
3328 AssocItem::MacroCall(it) => &it.syntax,
3329 AssocItem::TypeAlias(it) => &it.syntax,
3333 impl From<Fn> for ExternItem {
3334 fn from(node: Fn) -> ExternItem { ExternItem::Fn(node) }
3336 impl From<MacroCall> for ExternItem {
3337 fn from(node: MacroCall) -> ExternItem { ExternItem::MacroCall(node) }
3339 impl From<Static> for ExternItem {
3340 fn from(node: Static) -> ExternItem { ExternItem::Static(node) }
3342 impl AstNode for ExternItem {
3343 fn can_cast(kind: SyntaxKind) -> bool {
3345 FN | MACRO_CALL | STATIC => true,
3349 fn cast(syntax: SyntaxNode) -> Option<Self> {
3350 let res = match syntax.kind() {
3351 FN => ExternItem::Fn(Fn { syntax }),
3352 MACRO_CALL => ExternItem::MacroCall(MacroCall { syntax }),
3353 STATIC => ExternItem::Static(Static { syntax }),
3358 fn syntax(&self) -> &SyntaxNode {
3360 ExternItem::Fn(it) => &it.syntax,
3361 ExternItem::MacroCall(it) => &it.syntax,
3362 ExternItem::Static(it) => &it.syntax,
3366 impl From<ConstParam> for GenericParam {
3367 fn from(node: ConstParam) -> GenericParam { GenericParam::ConstParam(node) }
3369 impl From<LifetimeParam> for GenericParam {
3370 fn from(node: LifetimeParam) -> GenericParam { GenericParam::LifetimeParam(node) }
3372 impl From<TypeParam> for GenericParam {
3373 fn from(node: TypeParam) -> GenericParam { GenericParam::TypeParam(node) }
3375 impl AstNode for GenericParam {
3376 fn can_cast(kind: SyntaxKind) -> bool {
3378 CONST_PARAM | LIFETIME_PARAM | TYPE_PARAM => true,
3382 fn cast(syntax: SyntaxNode) -> Option<Self> {
3383 let res = match syntax.kind() {
3384 CONST_PARAM => GenericParam::ConstParam(ConstParam { syntax }),
3385 LIFETIME_PARAM => GenericParam::LifetimeParam(LifetimeParam { syntax }),
3386 TYPE_PARAM => GenericParam::TypeParam(TypeParam { syntax }),
3391 fn syntax(&self) -> &SyntaxNode {
3393 GenericParam::ConstParam(it) => &it.syntax,
3394 GenericParam::LifetimeParam(it) => &it.syntax,
3395 GenericParam::TypeParam(it) => &it.syntax,
3399 impl std::fmt::Display for GenericArg {
3400 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3401 std::fmt::Display::fmt(self.syntax(), f)
3404 impl std::fmt::Display for Type {
3405 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3406 std::fmt::Display::fmt(self.syntax(), f)
3409 impl std::fmt::Display for Expr {
3410 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3411 std::fmt::Display::fmt(self.syntax(), f)
3414 impl std::fmt::Display for Item {
3415 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3416 std::fmt::Display::fmt(self.syntax(), f)
3419 impl std::fmt::Display for Stmt {
3420 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3421 std::fmt::Display::fmt(self.syntax(), f)
3424 impl std::fmt::Display for Pat {
3425 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3426 std::fmt::Display::fmt(self.syntax(), f)
3429 impl std::fmt::Display for FieldList {
3430 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3431 std::fmt::Display::fmt(self.syntax(), f)
3434 impl std::fmt::Display for AdtDef {
3435 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3436 std::fmt::Display::fmt(self.syntax(), f)
3439 impl std::fmt::Display for AssocItem {
3440 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3441 std::fmt::Display::fmt(self.syntax(), f)
3444 impl std::fmt::Display for ExternItem {
3445 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3446 std::fmt::Display::fmt(self.syntax(), f)
3449 impl std::fmt::Display for GenericParam {
3450 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3451 std::fmt::Display::fmt(self.syntax(), f)
3454 impl std::fmt::Display for Name {
3455 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3456 std::fmt::Display::fmt(self.syntax(), f)
3459 impl std::fmt::Display for NameRef {
3460 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3461 std::fmt::Display::fmt(self.syntax(), f)
3464 impl std::fmt::Display for Path {
3465 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3466 std::fmt::Display::fmt(self.syntax(), f)
3469 impl std::fmt::Display for PathSegment {
3470 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3471 std::fmt::Display::fmt(self.syntax(), f)
3474 impl std::fmt::Display for GenericArgList {
3475 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3476 std::fmt::Display::fmt(self.syntax(), f)
3479 impl std::fmt::Display for ParamList {
3480 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3481 std::fmt::Display::fmt(self.syntax(), f)
3484 impl std::fmt::Display for RetType {
3485 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3486 std::fmt::Display::fmt(self.syntax(), f)
3489 impl std::fmt::Display for PathType {
3490 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3491 std::fmt::Display::fmt(self.syntax(), f)
3494 impl std::fmt::Display for TypeArg {
3495 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3496 std::fmt::Display::fmt(self.syntax(), f)
3499 impl std::fmt::Display for AssocTypeArg {
3500 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3501 std::fmt::Display::fmt(self.syntax(), f)
3504 impl std::fmt::Display for LifetimeArg {
3505 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3506 std::fmt::Display::fmt(self.syntax(), f)
3509 impl std::fmt::Display for ConstArg {
3510 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3511 std::fmt::Display::fmt(self.syntax(), f)
3514 impl std::fmt::Display for TypeBoundList {
3515 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3516 std::fmt::Display::fmt(self.syntax(), f)
3519 impl std::fmt::Display for MacroCall {
3520 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3521 std::fmt::Display::fmt(self.syntax(), f)
3524 impl std::fmt::Display for Attr {
3525 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3526 std::fmt::Display::fmt(self.syntax(), f)
3529 impl std::fmt::Display for TokenTree {
3530 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3531 std::fmt::Display::fmt(self.syntax(), f)
3534 impl std::fmt::Display for MacroItems {
3535 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3536 std::fmt::Display::fmt(self.syntax(), f)
3539 impl std::fmt::Display for MacroStmts {
3540 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3541 std::fmt::Display::fmt(self.syntax(), f)
3544 impl std::fmt::Display for SourceFile {
3545 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3546 std::fmt::Display::fmt(self.syntax(), f)
3549 impl std::fmt::Display for Const {
3550 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3551 std::fmt::Display::fmt(self.syntax(), f)
3554 impl std::fmt::Display for Enum {
3555 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3556 std::fmt::Display::fmt(self.syntax(), f)
3559 impl std::fmt::Display for ExternBlock {
3560 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3561 std::fmt::Display::fmt(self.syntax(), f)
3564 impl std::fmt::Display for ExternCrate {
3565 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3566 std::fmt::Display::fmt(self.syntax(), f)
3569 impl std::fmt::Display for Fn {
3570 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3571 std::fmt::Display::fmt(self.syntax(), f)
3574 impl std::fmt::Display for Impl {
3575 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3576 std::fmt::Display::fmt(self.syntax(), f)
3579 impl std::fmt::Display for Module {
3580 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3581 std::fmt::Display::fmt(self.syntax(), f)
3584 impl std::fmt::Display for Static {
3585 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3586 std::fmt::Display::fmt(self.syntax(), f)
3589 impl std::fmt::Display for Struct {
3590 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3591 std::fmt::Display::fmt(self.syntax(), f)
3594 impl std::fmt::Display for Trait {
3595 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3596 std::fmt::Display::fmt(self.syntax(), f)
3599 impl std::fmt::Display for TypeAlias {
3600 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3601 std::fmt::Display::fmt(self.syntax(), f)
3604 impl std::fmt::Display for Union {
3605 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3606 std::fmt::Display::fmt(self.syntax(), f)
3609 impl std::fmt::Display for Use {
3610 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3611 std::fmt::Display::fmt(self.syntax(), f)
3614 impl std::fmt::Display for Visibility {
3615 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3616 std::fmt::Display::fmt(self.syntax(), f)
3619 impl std::fmt::Display for ItemList {
3620 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3621 std::fmt::Display::fmt(self.syntax(), f)
3624 impl std::fmt::Display for Rename {
3625 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3626 std::fmt::Display::fmt(self.syntax(), f)
3629 impl std::fmt::Display for UseTree {
3630 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3631 std::fmt::Display::fmt(self.syntax(), f)
3634 impl std::fmt::Display for UseTreeList {
3635 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3636 std::fmt::Display::fmt(self.syntax(), f)
3639 impl std::fmt::Display for Abi {
3640 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3641 std::fmt::Display::fmt(self.syntax(), f)
3644 impl std::fmt::Display for GenericParamList {
3645 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3646 std::fmt::Display::fmt(self.syntax(), f)
3649 impl std::fmt::Display for WhereClause {
3650 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3651 std::fmt::Display::fmt(self.syntax(), f)
3654 impl std::fmt::Display for BlockExpr {
3655 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3656 std::fmt::Display::fmt(self.syntax(), f)
3659 impl std::fmt::Display for SelfParam {
3660 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3661 std::fmt::Display::fmt(self.syntax(), f)
3664 impl std::fmt::Display for Param {
3665 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3666 std::fmt::Display::fmt(self.syntax(), f)
3669 impl std::fmt::Display for RecordFieldList {
3670 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3671 std::fmt::Display::fmt(self.syntax(), f)
3674 impl std::fmt::Display for TupleFieldList {
3675 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3676 std::fmt::Display::fmt(self.syntax(), f)
3679 impl std::fmt::Display for RecordField {
3680 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3681 std::fmt::Display::fmt(self.syntax(), f)
3684 impl std::fmt::Display for TupleField {
3685 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3686 std::fmt::Display::fmt(self.syntax(), f)
3689 impl std::fmt::Display for VariantList {
3690 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3691 std::fmt::Display::fmt(self.syntax(), f)
3694 impl std::fmt::Display for Variant {
3695 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3696 std::fmt::Display::fmt(self.syntax(), f)
3699 impl std::fmt::Display for AssocItemList {
3700 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3701 std::fmt::Display::fmt(self.syntax(), f)
3704 impl std::fmt::Display for ExternItemList {
3705 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3706 std::fmt::Display::fmt(self.syntax(), f)
3709 impl std::fmt::Display for ConstParam {
3710 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3711 std::fmt::Display::fmt(self.syntax(), f)
3714 impl std::fmt::Display for LifetimeParam {
3715 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3716 std::fmt::Display::fmt(self.syntax(), f)
3719 impl std::fmt::Display for TypeParam {
3720 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3721 std::fmt::Display::fmt(self.syntax(), f)
3724 impl std::fmt::Display for WherePred {
3725 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3726 std::fmt::Display::fmt(self.syntax(), f)
3729 impl std::fmt::Display for Literal {
3730 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3731 std::fmt::Display::fmt(self.syntax(), f)
3734 impl std::fmt::Display for ExprStmt {
3735 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3736 std::fmt::Display::fmt(self.syntax(), f)
3739 impl std::fmt::Display for LetStmt {
3740 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3741 std::fmt::Display::fmt(self.syntax(), f)
3744 impl std::fmt::Display for ArrayExpr {
3745 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3746 std::fmt::Display::fmt(self.syntax(), f)
3749 impl std::fmt::Display for AwaitExpr {
3750 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3751 std::fmt::Display::fmt(self.syntax(), f)
3754 impl std::fmt::Display for BinExpr {
3755 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3756 std::fmt::Display::fmt(self.syntax(), f)
3759 impl std::fmt::Display for BoxExpr {
3760 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3761 std::fmt::Display::fmt(self.syntax(), f)
3764 impl std::fmt::Display for BreakExpr {
3765 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3766 std::fmt::Display::fmt(self.syntax(), f)
3769 impl std::fmt::Display for CallExpr {
3770 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3771 std::fmt::Display::fmt(self.syntax(), f)
3774 impl std::fmt::Display for CastExpr {
3775 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3776 std::fmt::Display::fmt(self.syntax(), f)
3779 impl std::fmt::Display for ClosureExpr {
3780 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3781 std::fmt::Display::fmt(self.syntax(), f)
3784 impl std::fmt::Display for ContinueExpr {
3785 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3786 std::fmt::Display::fmt(self.syntax(), f)
3789 impl std::fmt::Display for EffectExpr {
3790 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3791 std::fmt::Display::fmt(self.syntax(), f)
3794 impl std::fmt::Display for FieldExpr {
3795 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3796 std::fmt::Display::fmt(self.syntax(), f)
3799 impl std::fmt::Display for ForExpr {
3800 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3801 std::fmt::Display::fmt(self.syntax(), f)
3804 impl std::fmt::Display for IfExpr {
3805 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3806 std::fmt::Display::fmt(self.syntax(), f)
3809 impl std::fmt::Display for IndexExpr {
3810 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3811 std::fmt::Display::fmt(self.syntax(), f)
3814 impl std::fmt::Display for LoopExpr {
3815 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3816 std::fmt::Display::fmt(self.syntax(), f)
3819 impl std::fmt::Display for MatchExpr {
3820 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3821 std::fmt::Display::fmt(self.syntax(), f)
3824 impl std::fmt::Display for MethodCallExpr {
3825 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3826 std::fmt::Display::fmt(self.syntax(), f)
3829 impl std::fmt::Display for ParenExpr {
3830 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3831 std::fmt::Display::fmt(self.syntax(), f)
3834 impl std::fmt::Display for PathExpr {
3835 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3836 std::fmt::Display::fmt(self.syntax(), f)
3839 impl std::fmt::Display for PrefixExpr {
3840 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3841 std::fmt::Display::fmt(self.syntax(), f)
3844 impl std::fmt::Display for RangeExpr {
3845 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3846 std::fmt::Display::fmt(self.syntax(), f)
3849 impl std::fmt::Display for RecordExpr {
3850 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3851 std::fmt::Display::fmt(self.syntax(), f)
3854 impl std::fmt::Display for RefExpr {
3855 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3856 std::fmt::Display::fmt(self.syntax(), f)
3859 impl std::fmt::Display for ReturnExpr {
3860 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3861 std::fmt::Display::fmt(self.syntax(), f)
3864 impl std::fmt::Display for TryExpr {
3865 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3866 std::fmt::Display::fmt(self.syntax(), f)
3869 impl std::fmt::Display for TupleExpr {
3870 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3871 std::fmt::Display::fmt(self.syntax(), f)
3874 impl std::fmt::Display for WhileExpr {
3875 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3876 std::fmt::Display::fmt(self.syntax(), f)
3879 impl std::fmt::Display for Label {
3880 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3881 std::fmt::Display::fmt(self.syntax(), f)
3884 impl std::fmt::Display for RecordExprFieldList {
3885 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3886 std::fmt::Display::fmt(self.syntax(), f)
3889 impl std::fmt::Display for RecordExprField {
3890 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3891 std::fmt::Display::fmt(self.syntax(), f)
3894 impl std::fmt::Display for ArgList {
3895 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3896 std::fmt::Display::fmt(self.syntax(), f)
3899 impl std::fmt::Display for Condition {
3900 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3901 std::fmt::Display::fmt(self.syntax(), f)
3904 impl std::fmt::Display for MatchArmList {
3905 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3906 std::fmt::Display::fmt(self.syntax(), f)
3909 impl std::fmt::Display for MatchArm {
3910 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3911 std::fmt::Display::fmt(self.syntax(), f)
3914 impl std::fmt::Display for MatchGuard {
3915 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3916 std::fmt::Display::fmt(self.syntax(), f)
3919 impl std::fmt::Display for ArrayType {
3920 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3921 std::fmt::Display::fmt(self.syntax(), f)
3924 impl std::fmt::Display for DynTraitType {
3925 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3926 std::fmt::Display::fmt(self.syntax(), f)
3929 impl std::fmt::Display for FnPtrType {
3930 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3931 std::fmt::Display::fmt(self.syntax(), f)
3934 impl std::fmt::Display for ForType {
3935 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3936 std::fmt::Display::fmt(self.syntax(), f)
3939 impl std::fmt::Display for ImplTraitType {
3940 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3941 std::fmt::Display::fmt(self.syntax(), f)
3944 impl std::fmt::Display for InferType {
3945 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3946 std::fmt::Display::fmt(self.syntax(), f)
3949 impl std::fmt::Display for NeverType {
3950 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3951 std::fmt::Display::fmt(self.syntax(), f)
3954 impl std::fmt::Display for ParenType {
3955 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3956 std::fmt::Display::fmt(self.syntax(), f)
3959 impl std::fmt::Display for PtrType {
3960 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3961 std::fmt::Display::fmt(self.syntax(), f)
3964 impl std::fmt::Display for RefType {
3965 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3966 std::fmt::Display::fmt(self.syntax(), f)
3969 impl std::fmt::Display for SliceType {
3970 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3971 std::fmt::Display::fmt(self.syntax(), f)
3974 impl std::fmt::Display for TupleType {
3975 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3976 std::fmt::Display::fmt(self.syntax(), f)
3979 impl std::fmt::Display for TypeBound {
3980 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3981 std::fmt::Display::fmt(self.syntax(), f)
3984 impl std::fmt::Display for IdentPat {
3985 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3986 std::fmt::Display::fmt(self.syntax(), f)
3989 impl std::fmt::Display for BoxPat {
3990 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3991 std::fmt::Display::fmt(self.syntax(), f)
3994 impl std::fmt::Display for RestPat {
3995 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3996 std::fmt::Display::fmt(self.syntax(), f)
3999 impl std::fmt::Display for LiteralPat {
4000 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4001 std::fmt::Display::fmt(self.syntax(), f)
4004 impl std::fmt::Display for MacroPat {
4005 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4006 std::fmt::Display::fmt(self.syntax(), f)
4009 impl std::fmt::Display for OrPat {
4010 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4011 std::fmt::Display::fmt(self.syntax(), f)
4014 impl std::fmt::Display for ParenPat {
4015 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4016 std::fmt::Display::fmt(self.syntax(), f)
4019 impl std::fmt::Display for PathPat {
4020 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4021 std::fmt::Display::fmt(self.syntax(), f)
4024 impl std::fmt::Display for WildcardPat {
4025 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4026 std::fmt::Display::fmt(self.syntax(), f)
4029 impl std::fmt::Display for RangePat {
4030 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4031 std::fmt::Display::fmt(self.syntax(), f)
4034 impl std::fmt::Display for RecordPat {
4035 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4036 std::fmt::Display::fmt(self.syntax(), f)
4039 impl std::fmt::Display for RefPat {
4040 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4041 std::fmt::Display::fmt(self.syntax(), f)
4044 impl std::fmt::Display for SlicePat {
4045 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4046 std::fmt::Display::fmt(self.syntax(), f)
4049 impl std::fmt::Display for TuplePat {
4050 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4051 std::fmt::Display::fmt(self.syntax(), f)
4054 impl std::fmt::Display for TupleStructPat {
4055 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4056 std::fmt::Display::fmt(self.syntax(), f)
4059 impl std::fmt::Display for RecordPatFieldList {
4060 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4061 std::fmt::Display::fmt(self.syntax(), f)
4064 impl std::fmt::Display for RecordPatField {
4065 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
4066 std::fmt::Display::fmt(self.syntax(), f)