@@ -16,7 +16,7 @@ use std::fmt;
1616use std:: u32;
1717
1818newtype_index ! {
19- pub struct CrateNum {
19+ pub struct CrateId {
2020 ENCODABLE = custom
2121 }
2222}
@@ -38,7 +38,7 @@ pub enum CrateNum {
3838impl :: std:: fmt:: Debug for CrateNum {
3939 fn fmt ( & self , fmt : & mut :: std:: fmt:: Formatter ) -> :: std:: fmt:: Result {
4040 match self {
41- CrateNum :: Index ( id) => write ! ( fmt, "crate{}" , id. 0 ) ,
41+ CrateNum :: Index ( id) => write ! ( fmt, "crate{}" , id. private ) ,
4242 CrateNum :: Invalid => write ! ( fmt, "invalid crate" ) ,
4343 CrateNum :: BuiltinMacros => write ! ( fmt, "bultin macros crate" ) ,
4444 CrateNum :: ReservedForIncrCompCache => write ! ( fmt, "crate for decoding incr comp cache" ) ,
@@ -48,7 +48,7 @@ impl ::std::fmt::Debug for CrateNum {
4848
4949/// Item definitions in the currently-compiled crate would have the CrateNum
5050/// LOCAL_CRATE in their DefId.
51- pub const LOCAL_CRATE : CrateNum = CrateNum :: Index ( CrateId ( 0 ) ) ;
51+ pub const LOCAL_CRATE : CrateNum = CrateNum :: Index ( CrateId :: from_u32_const ( 0 ) ) ;
5252
5353
5454impl Idx for CrateNum {
@@ -71,13 +71,35 @@ impl CrateNum {
7171 CrateNum :: from_usize ( x)
7272 }
7373
74+ pub fn from_usize ( x : usize ) -> CrateNum {
75+ CrateNum :: Index ( CrateId :: from_usize ( x) )
76+ }
77+
78+ pub fn from_u32 ( x : u32 ) -> CrateNum {
79+ CrateNum :: Index ( CrateId :: from_u32 ( x) )
80+ }
81+
82+ pub fn as_usize ( self ) -> usize {
83+ match self {
84+ CrateNum :: Index ( id) => id. as_usize ( ) ,
85+ _ => bug ! ( "tried to get index of nonstandard crate {:?}" , self ) ,
86+ }
87+ }
88+
89+ pub fn as_u32 ( self ) -> u32 {
90+ match self {
91+ CrateNum :: Index ( id) => id. as_u32 ( ) ,
92+ _ => bug ! ( "tried to get index of nonstandard crate {:?}" , self ) ,
93+ }
94+ }
95+
7496 pub fn as_def_id ( & self ) -> DefId { DefId { krate : * self , index : CRATE_DEF_INDEX } }
7597}
7698
7799impl fmt:: Display for CrateNum {
78100 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
79101 match self {
80- CrateNum :: Index ( id) => fmt:: Display :: fmt ( & id. 0 , f) ,
102+ CrateNum :: Index ( id) => fmt:: Display :: fmt ( & id. private , f) ,
81103 CrateNum :: Invalid => write ! ( f, "invalid crate" ) ,
82104 CrateNum :: BuiltinMacros => write ! ( f, "bultin macros crate" ) ,
83105 CrateNum :: ReservedForIncrCompCache => write ! ( f, "crate for decoding incr comp cache" ) ,
0 commit comments