@@ -8,6 +8,7 @@ use proc_macro2::{Ident, Punct, Spacing, Span, TokenStream};
8
8
use quote:: { quote, ToTokens } ;
9
9
use std:: borrow:: Cow ;
10
10
use std:: collections:: HashSet ;
11
+ use std:: fmt:: Write ;
11
12
use svd_parser:: expand:: {
12
13
derive_enumerated_values, derive_field, BlockPath , EnumPath , FieldPath , Index , RegisterPath ,
13
14
} ;
@@ -138,19 +139,28 @@ pub fn render_register_mod(
138
139
) ;
139
140
140
141
let mut mod_items = TokenStream :: new ( ) ;
141
- let mut methods = vec ! [ ] ;
142
142
143
143
let can_read = access. can_read ( ) ;
144
144
let can_write = access. can_write ( ) ;
145
145
let can_reset = properties. reset_value . is_some ( ) ;
146
146
147
+ let mut doc = format ! ( "{description}\n " ) ;
148
+
149
+ fn method ( s : & str ) -> String {
150
+ format ! ( "[`{s}`](crate::generic::Reg::{s})" )
151
+ }
152
+
147
153
if can_read {
148
154
let desc = format ! ( "Register `{}` reader" , register. name) ;
149
155
mod_items. extend ( quote ! {
150
156
#[ doc = #desc]
151
157
pub type R = crate :: R <#regspec_ident>;
152
158
} ) ;
153
- methods. push ( "read" ) ;
159
+ write ! (
160
+ doc,
161
+ "\n This register you can {} with [`R`]." ,
162
+ method( "read" )
163
+ ) ?;
154
164
}
155
165
156
166
if can_write {
@@ -159,17 +169,29 @@ pub fn render_register_mod(
159
169
#[ doc = #desc]
160
170
pub type W = crate :: W <#regspec_ident>;
161
171
} ) ;
172
+ let mut methods = Vec :: new ( ) ;
162
173
methods. push ( "write_with_zero" ) ;
163
174
if can_reset {
164
175
methods. push ( "reset" ) ;
165
176
methods. push ( "write" ) ;
166
177
}
178
+ write ! (
179
+ doc,
180
+ "\n This register you can {} with [`W`]." ,
181
+ methods
182
+ . iter( )
183
+ . map( |m| method( m) )
184
+ . collect:: <Vec <_>>( )
185
+ . join( ", " )
186
+ ) ?;
167
187
}
168
188
169
189
if can_read && can_write {
170
- methods . push ( "modify" ) ;
190
+ write ! ( doc , " \n And {} with [`R`] and [`W`]." , method ( "modify" ) ) ? ;
171
191
}
172
192
193
+ doc. push_str ( "\n See [API](https://docs.rs/svd2rust/#read--modify--write-api)." ) ;
194
+
173
195
let mut r_impl_items = TokenStream :: new ( ) ;
174
196
let mut r_debug_impl = TokenStream :: new ( ) ;
175
197
let mut w_impl_items = TokenStream :: new ( ) ;
@@ -310,12 +332,6 @@ pub fn render_register_mod(
310
332
close. to_tokens ( & mut mod_items) ;
311
333
}
312
334
313
- let methods = methods
314
- . iter ( )
315
- . map ( |s| format ! ( "[`{s}`](crate::generic::Reg::{s})" ) )
316
- . collect :: < Vec < _ > > ( ) ;
317
- let mut doc = format ! ( "{description}\n \n This register you can {}. See [API](https://docs.rs/svd2rust/#read--modify--write-api)." , methods. join( ", " ) ) ;
318
-
319
335
if name_snake_case != "cfg" {
320
336
doc += format ! (
321
337
"\n \n For information about available fields see [{name_snake_case}](index.html) module"
0 commit comments