@@ -36,7 +36,7 @@ use std::str::{self, CharIndices};
3636use pulldown_cmark:: {
3737 BrokenLink , CodeBlockKind , CowStr , Event , LinkType , Options , Parser , Tag , TagEnd , html,
3838} ;
39- use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
39+ use rustc_data_structures:: fx:: FxHashMap ;
4040use rustc_errors:: { Diag , DiagMessage } ;
4141use rustc_hir:: def_id:: LocalDefId ;
4242use rustc_middle:: ty:: TyCtxt ;
@@ -1885,61 +1885,61 @@ pub(crate) fn rust_code_blocks(md: &str, extra_info: &ExtraInfo<'_>) -> Vec<Rust
18851885#[ derive( Clone , Default , Debug ) ]
18861886pub struct IdMap {
18871887 map : FxHashMap < Cow < ' static , str > , usize > ,
1888- defined_ids : FxHashSet < & ' static str > ,
1888+ defined_ids : FxHashMap < Cow < ' static , str > , usize > ,
18891889 existing_footnotes : usize ,
18901890}
18911891
1892- fn init_id_map ( ) -> FxHashSet < & ' static str > {
1893- let mut map = FxHashSet :: default ( ) ;
1892+ fn init_id_map ( ) -> FxHashMap < Cow < ' static , str > , usize > {
1893+ let mut map = FxHashMap :: default ( ) ;
18941894 // This is the list of IDs used in JavaScript.
1895- map. insert ( "help" ) ;
1896- map. insert ( "settings" ) ;
1897- map. insert ( "not-displayed" ) ;
1898- map. insert ( "alternative-display" ) ;
1899- map. insert ( "search" ) ;
1900- map. insert ( "crate-search" ) ;
1901- map. insert ( "crate-search-div" ) ;
1895+ map. insert ( "help" . into ( ) , 1 ) ;
1896+ map. insert ( "settings" . into ( ) , 1 ) ;
1897+ map. insert ( "not-displayed" . into ( ) , 1 ) ;
1898+ map. insert ( "alternative-display" . into ( ) , 1 ) ;
1899+ map. insert ( "search" . into ( ) , 1 ) ;
1900+ map. insert ( "crate-search" . into ( ) , 1 ) ;
1901+ map. insert ( "crate-search-div" . into ( ) , 1 ) ;
19021902 // This is the list of IDs used in HTML generated in Rust (including the ones
19031903 // used in tera template files).
1904- map. insert ( "themeStyle" ) ;
1905- map. insert ( "settings-menu" ) ;
1906- map. insert ( "help-button" ) ;
1907- map. insert ( "sidebar-button" ) ;
1908- map. insert ( "main-content" ) ;
1909- map. insert ( "toggle-all-docs" ) ;
1910- map. insert ( "all-types" ) ;
1911- map. insert ( "default-settings" ) ;
1912- map. insert ( "sidebar-vars" ) ;
1913- map. insert ( "copy-path" ) ;
1914- map. insert ( "rustdoc-toc" ) ;
1915- map. insert ( "rustdoc-modnav" ) ;
1904+ map. insert ( "themeStyle" . into ( ) , 1 ) ;
1905+ map. insert ( "settings-menu" . into ( ) , 1 ) ;
1906+ map. insert ( "help-button" . into ( ) , 1 ) ;
1907+ map. insert ( "sidebar-button" . into ( ) , 1 ) ;
1908+ map. insert ( "main-content" . into ( ) , 1 ) ;
1909+ map. insert ( "toggle-all-docs" . into ( ) , 1 ) ;
1910+ map. insert ( "all-types" . into ( ) , 1 ) ;
1911+ map. insert ( "default-settings" . into ( ) , 1 ) ;
1912+ map. insert ( "sidebar-vars" . into ( ) , 1 ) ;
1913+ map. insert ( "copy-path" . into ( ) , 1 ) ;
1914+ map. insert ( "rustdoc-toc" . into ( ) , 1 ) ;
1915+ map. insert ( "rustdoc-modnav" . into ( ) , 1 ) ;
19161916 // This is the list of IDs used by rustdoc sections (but still generated by
19171917 // rustdoc).
1918- map. insert ( "fields" ) ;
1919- map. insert ( "variants" ) ;
1920- map. insert ( "implementors-list" ) ;
1921- map. insert ( "synthetic-implementors-list" ) ;
1922- map. insert ( "foreign-impls" ) ;
1923- map. insert ( "implementations" ) ;
1924- map. insert ( "trait-implementations" ) ;
1925- map. insert ( "synthetic-implementations" ) ;
1926- map. insert ( "blanket-implementations" ) ;
1927- map. insert ( "required-associated-types" ) ;
1928- map. insert ( "provided-associated-types" ) ;
1929- map. insert ( "provided-associated-consts" ) ;
1930- map. insert ( "required-associated-consts" ) ;
1931- map. insert ( "required-methods" ) ;
1932- map. insert ( "provided-methods" ) ;
1933- map. insert ( "dyn-compatibility" ) ;
1934- map. insert ( "implementors" ) ;
1935- map. insert ( "synthetic-implementors" ) ;
1936- map. insert ( "implementations-list" ) ;
1937- map. insert ( "trait-implementations-list" ) ;
1938- map. insert ( "synthetic-implementations-list" ) ;
1939- map. insert ( "blanket-implementations-list" ) ;
1940- map. insert ( "deref-methods" ) ;
1941- map. insert ( "layout" ) ;
1942- map. insert ( "aliased-type" ) ;
1918+ map. insert ( "fields" . into ( ) , 1 ) ;
1919+ map. insert ( "variants" . into ( ) , 1 ) ;
1920+ map. insert ( "implementors-list" . into ( ) , 1 ) ;
1921+ map. insert ( "synthetic-implementors-list" . into ( ) , 1 ) ;
1922+ map. insert ( "foreign-impls" . into ( ) , 1 ) ;
1923+ map. insert ( "implementations" . into ( ) , 1 ) ;
1924+ map. insert ( "trait-implementations" . into ( ) , 1 ) ;
1925+ map. insert ( "synthetic-implementations" . into ( ) , 1 ) ;
1926+ map. insert ( "blanket-implementations" . into ( ) , 1 ) ;
1927+ map. insert ( "required-associated-types" . into ( ) , 1 ) ;
1928+ map. insert ( "provided-associated-types" . into ( ) , 1 ) ;
1929+ map. insert ( "provided-associated-consts" . into ( ) , 1 ) ;
1930+ map. insert ( "required-associated-consts" . into ( ) , 1 ) ;
1931+ map. insert ( "required-methods" . into ( ) , 1 ) ;
1932+ map. insert ( "provided-methods" . into ( ) , 1 ) ;
1933+ map. insert ( "dyn-compatibility" . into ( ) , 1 ) ;
1934+ map. insert ( "implementors" . into ( ) , 1 ) ;
1935+ map. insert ( "synthetic-implementors" . into ( ) , 1 ) ;
1936+ map. insert ( "implementations-list" . into ( ) , 1 ) ;
1937+ map. insert ( "trait-implementations-list" . into ( ) , 1 ) ;
1938+ map. insert ( "synthetic-implementations-list" . into ( ) , 1 ) ;
1939+ map. insert ( "blanket-implementations-list" . into ( ) , 1 ) ;
1940+ map. insert ( "deref-methods" . into ( ) , 1 ) ;
1941+ map. insert ( "layout" . into ( ) , 1 ) ;
1942+ map. insert ( "aliased-type" . into ( ) , 1 ) ;
19431943 map
19441944}
19451945
@@ -1950,16 +1950,7 @@ impl IdMap {
19501950
19511951 pub ( crate ) fn derive < S : AsRef < str > + ToString > ( & mut self , candidate : S ) -> String {
19521952 let id = match self . map . get_mut ( candidate. as_ref ( ) ) {
1953- None => {
1954- let candidate = candidate. to_string ( ) ;
1955- if self . defined_ids . contains ( candidate. as_str ( ) ) {
1956- let id = format ! ( "{}-{}" , candidate, 1 ) ;
1957- self . map . insert ( candidate. into ( ) , 2 ) ;
1958- id
1959- } else {
1960- candidate. to_string ( )
1961- }
1962- }
1953+ None => candidate. to_string ( ) ,
19631954 Some ( a) => {
19641955 let id = format ! ( "{}-{}" , candidate. as_ref( ) , * a) ;
19651956 * a += 1 ;
@@ -1981,7 +1972,7 @@ impl IdMap {
19811972 }
19821973
19831974 pub ( crate ) fn clear ( & mut self ) {
1984- self . map . clear ( ) ;
1975+ self . map = self . defined_ids . clone ( ) ;
19851976 self . existing_footnotes = 0 ;
19861977 }
19871978}
0 commit comments