@@ -9,7 +9,6 @@ pub fn render() -> Result<Vec<Tokens>> {
9
9
10
10
generic_items. push ( quote ! {
11
11
use core:: marker;
12
- use core:: ops:: Deref ;
13
12
use vcell:: VolatileCell ;
14
13
15
14
///Marker trait for readable register/field
@@ -38,43 +37,35 @@ pub fn render() -> Result<Vec<Tokens>> {
38
37
_marker: marker:: PhantomData <REG >,
39
38
}
40
39
41
- impl <U , REG > core:: ops:: Deref for Reg <U , REG > {
42
- type Target = vcell:: VolatileCell <U >;
43
- #[ inline( always) ]
44
- fn deref( & self ) -> & Self :: Target {
45
- & self . register
46
- }
47
- }
48
-
49
40
impl <U , REG > Reg <U , REG >
50
41
where
51
- Self : Readable + Deref < Target = VolatileCell < U >> ,
42
+ Self : Readable ,
52
43
U : Copy
53
44
{
54
45
///Reads the contents of the register
55
46
#[ inline( always) ]
56
47
pub fn read( & self ) -> R <U , Self > {
57
- R { bits: ( * self ) . get( ) , _reg: marker:: PhantomData }
48
+ R { bits: self . register . get( ) , _reg: marker:: PhantomData }
58
49
}
59
50
}
60
51
61
52
impl <U , REG > Reg <U , REG >
62
53
where
63
- Self : ResetValue <U > + Writable + Deref < Target = VolatileCell < U >> ,
54
+ Self : ResetValue <U > + Writable ,
64
55
U : Copy ,
65
56
{
66
57
///Writes the reset value to the register
67
58
#[ inline( always) ]
68
59
pub fn reset( & self ) {
69
- ( * self ) . set( Self :: reset_value( ) )
60
+ self . register . set( Self :: reset_value( ) )
70
61
}
71
62
}
72
63
} ) ;
73
64
74
65
generic_items. push ( quote ! {
75
66
impl <U , REG > Reg <U , REG >
76
67
where
77
- Self : ResetValue <U > + Writable + Deref < Target = VolatileCell < U >> ,
68
+ Self : ResetValue <U > + Writable ,
78
69
U : Copy
79
70
{
80
71
///Writes to the register
@@ -83,15 +74,15 @@ pub fn render() -> Result<Vec<Tokens>> {
83
74
where
84
75
F : FnOnce ( & mut W <U , Self >) -> & mut W <U , Self >
85
76
{
86
- ( * self ) . set( f( & mut W { bits: Self :: reset_value( ) , _reg: marker:: PhantomData } ) . bits) ;
77
+ self . register . set( f( & mut W { bits: Self :: reset_value( ) , _reg: marker:: PhantomData } ) . bits) ;
87
78
}
88
79
}
89
80
} ) ;
90
81
91
82
generic_items. push ( quote ! {
92
83
impl <U , REG > Reg <U , REG >
93
84
where
94
- Self : Writable + Deref < Target = VolatileCell < U >> ,
85
+ Self : Writable ,
95
86
U : Copy + Default
96
87
{
97
88
///Writes Zero to the register
@@ -100,15 +91,15 @@ pub fn render() -> Result<Vec<Tokens>> {
100
91
where
101
92
F : FnOnce ( & mut W <U , Self >) -> & mut W <U , Self >
102
93
{
103
- ( * self ) . set( f( & mut W { bits: U :: default ( ) , _reg: marker:: PhantomData } ) . bits) ;
94
+ self . register . set( f( & mut W { bits: U :: default ( ) , _reg: marker:: PhantomData } ) . bits) ;
104
95
}
105
96
}
106
97
} ) ;
107
98
108
99
generic_items. push ( quote ! {
109
100
impl <U , REG > Reg <U , REG >
110
101
where
111
- Self : Readable + Writable + Deref < Target = VolatileCell < U >> ,
102
+ Self : Readable + Writable ,
112
103
U : Copy ,
113
104
{
114
105
///Modifies the contents of the register
@@ -117,8 +108,8 @@ pub fn render() -> Result<Vec<Tokens>> {
117
108
where
118
109
for <' w> F : FnOnce ( & R <U , Self >, & ' w mut W <U , Self >) -> & ' w mut W <U , Self >
119
110
{
120
- let bits = ( * self ) . get( ) ;
121
- ( * self ) . set( f( & R { bits, _reg: marker:: PhantomData } , & mut W { bits, _reg: marker:: PhantomData } ) . bits) ;
111
+ let bits = self . register . get( ) ;
112
+ self . register . set( f( & R { bits, _reg: marker:: PhantomData } , & mut W { bits, _reg: marker:: PhantomData } ) . bits) ;
122
113
}
123
114
}
124
115
} ) ;
0 commit comments