@@ -108,24 +108,37 @@ impl ops::Deref for CrateName {
108108}
109109
110110#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
111- pub struct CrateDisplayName ( CrateName ) ;
111+ pub struct CrateDisplayName {
112+ // The name we use to display various paths (with `_`).
113+ crate_name : CrateName ,
114+ // The name as specified in Cargo.toml (with `-`).
115+ canonical_name : String ,
116+ }
112117
113118impl From < CrateName > for CrateDisplayName {
114- fn from ( inner : CrateName ) -> CrateDisplayName {
115- CrateDisplayName ( inner)
119+ fn from ( crate_name : CrateName ) -> CrateDisplayName {
120+ let canonical_name = crate_name. to_string ( ) ;
121+ CrateDisplayName { crate_name, canonical_name }
116122 }
117123}
118124
119125impl fmt:: Display for CrateDisplayName {
120126 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
121- write ! ( f, "{}" , self . 0 )
127+ write ! ( f, "{}" , self . crate_name )
122128 }
123129}
124130
125131impl ops:: Deref for CrateDisplayName {
126132 type Target = str ;
127133 fn deref ( & self ) -> & str {
128- & * self . 0
134+ & * self . crate_name
135+ }
136+ }
137+
138+ impl CrateDisplayName {
139+ pub fn from_canonical_name ( canonical_name : String ) -> CrateDisplayName {
140+ let crate_name = CrateName :: normalize_dashes ( & canonical_name) ;
141+ CrateDisplayName { crate_name, canonical_name }
129142 }
130143}
131144
@@ -155,7 +168,7 @@ pub struct CrateData {
155168 ///
156169 /// For purposes of analysis, crates are anonymous (only names in
157170 /// `Dependency` matters), this name should only be used for UI.
158- pub display_name : Option < CrateName > ,
171+ pub display_name : Option < CrateDisplayName > ,
159172 pub cfg_options : CfgOptions ,
160173 pub env : Env ,
161174 pub dependencies : Vec < Dependency > ,
@@ -184,7 +197,7 @@ impl CrateGraph {
184197 & mut self ,
185198 file_id : FileId ,
186199 edition : Edition ,
187- display_name : Option < CrateName > ,
200+ display_name : Option < CrateDisplayName > ,
188201 cfg_options : CfgOptions ,
189202 env : Env ,
190203 proc_macro : Vec < ( SmolStr , Arc < dyn tt:: TokenExpander > ) > ,
0 commit comments