@@ -13,16 +13,33 @@ impl Identifier {
1313 pub fn new ( s : impl Into < String > ) -> Self {
1414 Self ( s. into ( ) )
1515 }
16+ }
17+
18+ impl std:: cmp:: PartialEq < str > for Identifier {
1619 #[ inline]
17- pub fn as_str ( & self ) -> & str {
18- self . 0 . as_str ( )
20+ fn eq ( & self , other : & str ) -> bool {
21+ self . 0 == other
1922 }
2023}
2124
22- impl std:: string :: ToString for Identifier {
25+ impl std:: cmp :: PartialEq < String > for Identifier {
2326 #[ inline]
24- fn to_string ( & self ) -> String {
25- self . 0 . clone ( )
27+ fn eq ( & self , other : & String ) -> bool {
28+ & self . 0 == other
29+ }
30+ }
31+
32+ impl std:: ops:: Deref for Identifier {
33+ type Target = String ;
34+ #[ inline]
35+ fn deref ( & self ) -> & Self :: Target {
36+ & self . 0
37+ }
38+ }
39+
40+ impl std:: fmt:: Display for Identifier {
41+ fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
42+ self . 0 . fmt ( f)
2643 }
2744}
2845
@@ -33,24 +50,46 @@ impl From<Identifier> for String {
3350 }
3451}
3552
36- #[ derive( Clone , Debug , PartialEq , Eq , PartialOrd , Ord , Hash ) ]
53+ impl From < String > for Identifier {
54+ #[ inline]
55+ fn from ( id : String ) -> Self {
56+ Self ( id)
57+ }
58+ }
59+
60+ impl < ' a > From < & ' a str > for Identifier {
61+ #[ inline]
62+ fn from ( id : & ' a str ) -> Identifier {
63+ id. to_owned ( ) . into ( )
64+ }
65+ }
66+
67+ #[ derive( Copy , Clone , Debug , PartialEq , Eq , PartialOrd , Ord , Hash ) ]
3768pub struct Int ( u32 ) ;
3869
3970impl Int {
4071 pub fn new ( i : u32 ) -> Self {
4172 Self ( i)
4273 }
43- pub fn new_bool ( i : bool ) -> Self {
44- Self ( i as u32 )
45- }
4674 pub fn to_u32 ( & self ) -> u32 {
4775 self . 0
4876 }
4977 pub fn to_usize ( & self ) -> usize {
5078 self . 0 as _
5179 }
52- pub fn to_bool ( & self ) -> bool {
53- self . 0 > 0
80+ }
81+
82+ impl std:: cmp:: PartialEq < u32 > for Int {
83+ #[ inline]
84+ fn eq ( & self , other : & u32 ) -> bool {
85+ self . 0 == * other
86+ }
87+ }
88+
89+ impl std:: cmp:: PartialEq < usize > for Int {
90+ #[ inline]
91+ fn eq ( & self , other : & usize ) -> bool {
92+ self . 0 as usize == * other
5493 }
5594}
5695
@@ -165,11 +204,11 @@ impl<T, U> Attributed<T, U> {
165204
166205impl < T > Attributed < T , ( ) > {
167206 /// Creates a new node that spans the position specified by `range`.
168- pub fn new ( range : impl Into < TextRange > , node : T ) -> Self {
207+ pub fn new ( range : impl Into < TextRange > , node : impl Into < T > ) -> Self {
169208 Self {
170209 range : range. into ( ) ,
171210 custom : ( ) ,
172- node,
211+ node : node . into ( ) ,
173212 }
174213 }
175214
0 commit comments