@@ -16,7 +16,7 @@ use std::fmt;
16
16
use std:: u32;
17
17
18
18
newtype_index ! {
19
- pub struct CrateNum {
19
+ pub struct CrateId {
20
20
ENCODABLE = custom
21
21
}
22
22
}
@@ -38,7 +38,7 @@ pub enum CrateNum {
38
38
impl :: std:: fmt:: Debug for CrateNum {
39
39
fn fmt ( & self , fmt : & mut :: std:: fmt:: Formatter ) -> :: std:: fmt:: Result {
40
40
match self {
41
- CrateNum :: Index ( id) => write ! ( fmt, "crate{}" , id. 0 ) ,
41
+ CrateNum :: Index ( id) => write ! ( fmt, "crate{}" , id. private ) ,
42
42
CrateNum :: Invalid => write ! ( fmt, "invalid crate" ) ,
43
43
CrateNum :: BuiltinMacros => write ! ( fmt, "bultin macros crate" ) ,
44
44
CrateNum :: ReservedForIncrCompCache => write ! ( fmt, "crate for decoding incr comp cache" ) ,
@@ -48,7 +48,7 @@ impl ::std::fmt::Debug for CrateNum {
48
48
49
49
/// Item definitions in the currently-compiled crate would have the CrateNum
50
50
/// 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 ) ) ;
52
52
53
53
54
54
impl Idx for CrateNum {
@@ -71,13 +71,35 @@ impl CrateNum {
71
71
CrateNum :: from_usize ( x)
72
72
}
73
73
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
+
74
96
pub fn as_def_id ( & self ) -> DefId { DefId { krate : * self , index : CRATE_DEF_INDEX } }
75
97
}
76
98
77
99
impl fmt:: Display for CrateNum {
78
100
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
79
101
match self {
80
- CrateNum :: Index ( id) => fmt:: Display :: fmt ( & id. 0 , f) ,
102
+ CrateNum :: Index ( id) => fmt:: Display :: fmt ( & id. private , f) ,
81
103
CrateNum :: Invalid => write ! ( f, "invalid crate" ) ,
82
104
CrateNum :: BuiltinMacros => write ! ( f, "bultin macros crate" ) ,
83
105
CrateNum :: ReservedForIncrCompCache => write ! ( f, "crate for decoding incr comp cache" ) ,
0 commit comments