@@ -230,7 +230,8 @@ pub enum ItemEnum {
230
230
231
231
Union ( Union ) ,
232
232
Struct ( Struct ) ,
233
- StructField ( Type ) ,
233
+ /// The name of the field is given in the enclosing [`Item`]
234
+ Field ( Type ) ,
234
235
Enum ( Enum ) ,
235
236
Variant ( Variant ) ,
236
237
@@ -283,6 +284,7 @@ pub struct Module {
283
284
pub struct Union {
284
285
pub generics : Generics ,
285
286
pub fields_stripped : bool ,
287
+ /// Will all be [`ItemEnum::Field`]
286
288
pub fields : Vec < Id > ,
287
289
pub impls : Vec < Id > ,
288
290
}
@@ -292,6 +294,7 @@ pub struct Struct {
292
294
pub kind : StructKind ,
293
295
pub generics : Generics ,
294
296
pub fields_stripped : bool ,
297
+ /// Will all be [`ItemEnum::Field`]
295
298
pub fields : Vec < Id > ,
296
299
pub impls : Vec < Id > ,
297
300
}
@@ -300,22 +303,68 @@ pub struct Struct {
300
303
pub struct Enum {
301
304
pub generics : Generics ,
302
305
pub variants_stripped : bool ,
306
+ /// Will all be [`ItemEnum::Variant`]
303
307
pub variants : Vec < Id > ,
304
308
pub impls : Vec < Id > ,
305
309
}
306
310
307
311
#[ derive( Clone , Debug , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
308
312
pub struct Variant {
309
313
pub kind : StructKind ,
314
+ /// Will all be [`ItemEnum::Field`]
310
315
pub fields : Vec < Id > ,
311
316
pub fields_stripped : bool ,
312
317
}
313
318
314
319
#[ derive( Clone , Debug , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
315
320
#[ serde( rename_all = "snake_case" ) ]
321
+ /// The kind used for literals of a struct or enum.
316
322
pub enum StructKind {
317
- Struct ,
323
+ /// A "normal" struct, with named fields.
324
+ ///
325
+ /// Eg:
326
+ ///
327
+ /// ```rust
328
+ /// pub struct A {
329
+ /// x: i32,
330
+ /// }
331
+ /// pub struct B {}
332
+ /// pub enum C {
333
+ /// Variant { x: i32 },
334
+ /// }
335
+ /// pub enum D {
336
+ /// Variant {},
337
+ /// }
338
+ /// ```
339
+ NamedFields ,
340
+ /// Unnamed fields, accessed with a number.
341
+ ///
342
+ /// Eg:
343
+ ///
344
+ /// ```rust
345
+ /// pub struct A(i32);
346
+ /// pub struct B();
347
+ /// pub enum C {
348
+ /// Variant(i32),
349
+ /// }
350
+ /// pub enum D {
351
+ /// Variant(),
352
+ /// }
353
+ /// ```
318
354
Tuple ,
355
+ /// No fields, and no parentheses.
356
+ ///
357
+ /// Note: Cases without fields but with parentheses will have a different
358
+ /// kind, as seen in the examples above.
359
+ ///
360
+ /// Eg:
361
+ ///
362
+ /// ```rust
363
+ /// pub struct A;
364
+ /// pub enum B {
365
+ /// Variant,
366
+ /// }
367
+ /// ```
319
368
Unit ,
320
369
}
321
370
0 commit comments