Skip to content

Commit 18aea45

Browse files
committed
rustdoc-json-types: Clean up derives.
Closes #96189 Closes #96189 Everything is `Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize` except `Crate` and `Item` which arn't `Hash`, as they have `HashMap`'s. See linked issue for reasoning.
1 parent 5018181 commit 18aea45

File tree

2 files changed

+45
-45
lines changed

2 files changed

+45
-45
lines changed

src/librustdoc/json/conversions.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ impl FromWithTcx<clean::VariantStruct> for Struct {
624624
let clean::VariantStruct { struct_type, fields } = struct_;
625625
Struct {
626626
struct_type: from_ctor_kind(struct_type),
627-
generics: Default::default(),
627+
generics: Generics { params: vec![], where_predicates: vec![] },
628628
fields_stripped,
629629
fields: ids(fields, tcx),
630630
impls: Vec::new(),

src/rustdoc-json-types/lib.rs

+44-44
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub const FORMAT_VERSION: u32 = 15;
1414
/// A `Crate` is the root of the emitted JSON blob. It contains all type/documentation information
1515
/// about the language items in the local crate, as well as info about external items to allow
1616
/// tools to find or link to them.
17-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
17+
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1818
pub struct Crate {
1919
/// The id of the root [`Module`] item of the local crate.
2020
pub root: Id,
@@ -34,7 +34,7 @@ pub struct Crate {
3434
pub format_version: u32,
3535
}
3636

37-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
37+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
3838
pub struct ExternalCrate {
3939
pub name: String,
4040
pub html_root_url: Option<String>,
@@ -44,7 +44,7 @@ pub struct ExternalCrate {
4444
/// information. This struct should contain enough to generate a link/reference to the item in
4545
/// question, or can be used by a tool that takes the json output of multiple crates to find
4646
/// the actual item definition with all the relevant info.
47-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
47+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
4848
pub struct ItemSummary {
4949
/// Can be used to look up the name and html_root_url of the crate this item came from in the
5050
/// `external_crates` map.
@@ -56,7 +56,7 @@ pub struct ItemSummary {
5656
pub kind: ItemKind,
5757
}
5858

59-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
59+
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
6060
pub struct Item {
6161
/// The unique identifier of this item. Can be used to find this item in various mappings.
6262
pub id: Id,
@@ -83,7 +83,7 @@ pub struct Item {
8383
pub inner: ItemEnum,
8484
}
8585

86-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
86+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
8787
pub struct Span {
8888
/// The path to the source file for this span relative to the path `rustdoc` was invoked with.
8989
pub filename: PathBuf,
@@ -93,13 +93,13 @@ pub struct Span {
9393
pub end: (usize, usize),
9494
}
9595

96-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
96+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
9797
pub struct Deprecation {
9898
pub since: Option<String>,
9999
pub note: Option<String>,
100100
}
101101

102-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
102+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
103103
#[serde(rename_all = "snake_case")]
104104
pub enum Visibility {
105105
Public,
@@ -115,7 +115,7 @@ pub enum Visibility {
115115
},
116116
}
117117

118-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
118+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
119119
#[serde(rename_all = "snake_case")]
120120
pub enum GenericArgs {
121121
/// <'a, 32, B: Copy, C = u32>
@@ -124,7 +124,7 @@ pub enum GenericArgs {
124124
Parenthesized { inputs: Vec<Type>, output: Option<Type> },
125125
}
126126

127-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
127+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
128128
#[serde(rename_all = "snake_case")]
129129
pub enum GenericArg {
130130
Lifetime(String),
@@ -133,7 +133,7 @@ pub enum GenericArg {
133133
Infer,
134134
}
135135

136-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
136+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
137137
pub struct Constant {
138138
#[serde(rename = "type")]
139139
pub type_: Type,
@@ -142,14 +142,14 @@ pub struct Constant {
142142
pub is_literal: bool,
143143
}
144144

145-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
145+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
146146
pub struct TypeBinding {
147147
pub name: String,
148148
pub args: GenericArgs,
149149
pub binding: TypeBindingKind,
150150
}
151151

152-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
152+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
153153
#[serde(rename_all = "snake_case")]
154154
pub enum TypeBindingKind {
155155
Equality(Term),
@@ -159,7 +159,7 @@ pub enum TypeBindingKind {
159159
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
160160
pub struct Id(pub String);
161161

162-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
162+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
163163
#[serde(rename_all = "snake_case")]
164164
pub enum ItemKind {
165165
Module,
@@ -189,7 +189,7 @@ pub enum ItemKind {
189189
Keyword,
190190
}
191191

192-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
192+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
193193
#[serde(tag = "kind", content = "inner", rename_all = "snake_case")]
194194
pub enum ItemEnum {
195195
Module(Module),
@@ -241,21 +241,21 @@ pub enum ItemEnum {
241241
},
242242
}
243243

244-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
244+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
245245
pub struct Module {
246246
pub is_crate: bool,
247247
pub items: Vec<Id>,
248248
}
249249

250-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
250+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
251251
pub struct Union {
252252
pub generics: Generics,
253253
pub fields_stripped: bool,
254254
pub fields: Vec<Id>,
255255
pub impls: Vec<Id>,
256256
}
257257

258-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
258+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
259259
pub struct Struct {
260260
pub struct_type: StructType,
261261
pub generics: Generics,
@@ -264,15 +264,15 @@ pub struct Struct {
264264
pub impls: Vec<Id>,
265265
}
266266

267-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
267+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
268268
pub struct Enum {
269269
pub generics: Generics,
270270
pub variants_stripped: bool,
271271
pub variants: Vec<Id>,
272272
pub impls: Vec<Id>,
273273
}
274274

275-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
275+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
276276
#[serde(rename_all = "snake_case")]
277277
#[serde(tag = "variant_kind", content = "variant_inner")]
278278
pub enum Variant {
@@ -281,15 +281,15 @@ pub enum Variant {
281281
Struct(Vec<Id>),
282282
}
283283

284-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
284+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
285285
#[serde(rename_all = "snake_case")]
286286
pub enum StructType {
287287
Plain,
288288
Tuple,
289289
Unit,
290290
}
291291

292-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
292+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
293293
pub struct Header {
294294
#[serde(rename = "const")]
295295
pub const_: bool,
@@ -300,7 +300,7 @@ pub struct Header {
300300
pub abi: Abi,
301301
}
302302

303-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Hash)]
303+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
304304
pub enum Abi {
305305
// We only have a concrete listing here for stable ABI's because their are so many
306306
// See rustc_ast_passes::feature_gate::PostExpansionVisitor::check_abi for the list
@@ -316,34 +316,34 @@ pub enum Abi {
316316
Other(String),
317317
}
318318

319-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
319+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
320320
pub struct Function {
321321
pub decl: FnDecl,
322322
pub generics: Generics,
323323
pub header: Header,
324324
}
325325

326-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
326+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
327327
pub struct Method {
328328
pub decl: FnDecl,
329329
pub generics: Generics,
330330
pub header: Header,
331331
pub has_body: bool,
332332
}
333333

334-
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)]
334+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
335335
pub struct Generics {
336336
pub params: Vec<GenericParamDef>,
337337
pub where_predicates: Vec<WherePredicate>,
338338
}
339339

340-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
340+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
341341
pub struct GenericParamDef {
342342
pub name: String,
343343
pub kind: GenericParamDefKind,
344344
}
345345

346-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
346+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
347347
#[serde(rename_all = "snake_case")]
348348
pub enum GenericParamDefKind {
349349
Lifetime {
@@ -384,7 +384,7 @@ pub enum GenericParamDefKind {
384384
},
385385
}
386386

387-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
387+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
388388
#[serde(rename_all = "snake_case")]
389389
pub enum WherePredicate {
390390
BoundPredicate {
@@ -410,7 +410,7 @@ pub enum WherePredicate {
410410
},
411411
}
412412

413-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
413+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
414414
#[serde(rename_all = "snake_case")]
415415
pub enum GenericBound {
416416
TraitBound {
@@ -429,22 +429,22 @@ pub enum GenericBound {
429429
Outlives(String),
430430
}
431431

432-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
432+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
433433
#[serde(rename_all = "snake_case")]
434434
pub enum TraitBoundModifier {
435435
None,
436436
Maybe,
437437
MaybeConst,
438438
}
439439

440-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
440+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
441441
#[serde(rename_all = "snake_case")]
442442
pub enum Term {
443443
Type(Type),
444444
Constant(Constant),
445445
}
446446

447-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
447+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
448448
#[serde(rename_all = "snake_case")]
449449
#[serde(tag = "kind", content = "inner")]
450450
pub enum Type {
@@ -498,7 +498,7 @@ pub enum Type {
498498
},
499499
}
500500

501-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
501+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
502502
pub struct FunctionPointer {
503503
pub decl: FnDecl,
504504
/// Used for Higher-Rank Trait Bounds (HRTBs)
@@ -512,14 +512,14 @@ pub struct FunctionPointer {
512512
pub header: Header,
513513
}
514514

515-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
515+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
516516
pub struct FnDecl {
517517
pub inputs: Vec<(String, Type)>,
518518
pub output: Option<Type>,
519519
pub c_variadic: bool,
520520
}
521521

522-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
522+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
523523
pub struct Trait {
524524
pub is_auto: bool,
525525
pub is_unsafe: bool,
@@ -529,13 +529,13 @@ pub struct Trait {
529529
pub implementations: Vec<Id>,
530530
}
531531

532-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
532+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
533533
pub struct TraitAlias {
534534
pub generics: Generics,
535535
pub params: Vec<GenericBound>,
536536
}
537537

538-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
538+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
539539
pub struct Impl {
540540
pub is_unsafe: bool,
541541
pub generics: Generics,
@@ -550,7 +550,7 @@ pub struct Impl {
550550
pub blanket_impl: Option<Type>,
551551
}
552552

553-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
553+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
554554
#[serde(rename_all = "snake_case")]
555555
pub struct Import {
556556
/// The full path being imported.
@@ -564,37 +564,37 @@ pub struct Import {
564564
pub glob: bool,
565565
}
566566

567-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
567+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
568568
pub struct ProcMacro {
569569
pub kind: MacroKind,
570570
pub helpers: Vec<String>,
571571
}
572572

573-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
573+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
574574
#[serde(rename_all = "snake_case")]
575575
pub enum MacroKind {
576576
/// A bang macro `foo!()`.
577577
Bang,
578578
/// An attribute macro `#[foo]`.
579579
Attr,
580-
/// A derive macro `#[derive(Foo)]`
580+
/// A derive macro `#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]`
581581
Derive,
582582
}
583583

584-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
584+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
585585
pub struct Typedef {
586586
#[serde(rename = "type")]
587587
pub type_: Type,
588588
pub generics: Generics,
589589
}
590590

591-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
591+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
592592
pub struct OpaqueTy {
593593
pub bounds: Vec<GenericBound>,
594594
pub generics: Generics,
595595
}
596596

597-
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
597+
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
598598
pub struct Static {
599599
#[serde(rename = "type")]
600600
pub type_: Type,

0 commit comments

Comments
 (0)