@@ -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 ) ]
1818pub 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 ) ]
3838pub 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 ) ]
4848pub 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 ) ]
6060pub 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 ) ]
8787pub 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 ) ]
9797pub 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" ) ]
104104pub 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" ) ]
120120pub 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" ) ]
129129pub 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 ) ]
137137pub 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 ) ]
146146pub 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" ) ]
154154pub enum TypeBindingKind {
155155 Equality ( Term ) ,
@@ -159,7 +159,7 @@ pub enum TypeBindingKind {
159159#[ derive( Clone , Debug , PartialEq , Eq , Hash , Serialize , Deserialize ) ]
160160pub 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" ) ]
164164pub 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" ) ]
194194pub 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 ) ]
245245pub 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 ) ]
251251pub 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 ) ]
259259pub 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 ) ]
268268pub 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" ) ]
278278pub 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" ) ]
286286pub 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 ) ]
293293pub 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 ) ]
304304pub 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 ) ]
320320pub 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 ) ]
327327pub 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 ) ]
335335pub 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 ) ]
341341pub 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" ) ]
348348pub 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" ) ]
389389pub 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" ) ]
415415pub 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" ) ]
434434pub 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" ) ]
442442pub 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" ) ]
450450pub 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 ) ]
502502pub 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 ) ]
516516pub 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 ) ]
523523pub 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 ) ]
533533pub 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 ) ]
539539pub 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" ) ]
555555pub 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 ) ]
568568pub 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" ) ]
575575pub 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 ) ]
585585pub 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 ) ]
592592pub 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 ) ]
598598pub struct Static {
599599 #[ serde( rename = "type" ) ]
600600 pub type_ : Type ,
0 commit comments