@@ -613,10 +613,10 @@ pub fn fields(
613613
614614 let brief_suffix = if let Field :: Array ( _, de) = & f {
615615 if let Some ( range) = de. indexes_as_range ( ) {
616- format ! ( "[ {}-{}] " , * range. start( ) , * range. end( ) )
616+ format ! ( "( {}-{}) " , * range. start( ) , * range. end( ) )
617617 } else {
618618 let suffixes: Vec < _ > = de. indexes ( ) . collect ( ) ;
619- format ! ( "[{}] " , suffixes. join( "," ) )
619+ format ! ( "({}) " , suffixes. join( "," ) )
620620 }
621621 } else {
622622 String :: new ( )
@@ -905,19 +905,27 @@ pub fn fields(
905905 let increment = de. dim_increment ;
906906 let doc = util:: replace_suffix ( & description, & brief_suffix) ;
907907 let first_name = svd:: array:: names ( f, de) . next ( ) . unwrap ( ) ;
908- let array_doc =
909- format ! ( "{doc}\n \n NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
908+ let note = format ! ( "NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
910909 let offset_calc = calculate_offset ( increment, offset, true ) ;
911910 let value = quote ! { ( ( self . bits >> #offset_calc) & #hexmask) #cast } ;
912911 let dim = unsuffixed ( de. dim ) ;
912+ let name_snake_case_iter = Ident :: new ( & format ! ( "{name_snake_case}_iter" ) , span) ;
913913 r_impl_items. extend ( quote ! {
914- #[ doc = #array_doc]
914+ #[ doc = #doc]
915+ #[ doc = "" ]
916+ #[ doc = #note]
915917 #inline
916918 pub fn #name_snake_case( & self , n: u8 ) -> #reader_ty {
917919 #[ allow( clippy:: no_effect) ]
918920 [ ( ) ; #dim] [ n as usize ] ;
919921 #reader_ty:: new ( #value )
920922 }
923+ #[ doc = "Iterator for array of:" ]
924+ #[ doc = #doc]
925+ #inline
926+ pub fn #name_snake_case_iter( & self ) -> impl Iterator <Item = #reader_ty> + ' _ {
927+ ( 0 ..#dim) . map( |n| #reader_ty:: new ( #value ) )
928+ }
921929 } ) ;
922930
923931 for fi in svd:: field:: expand ( f, de) {
@@ -1181,11 +1189,12 @@ pub fn fields(
11811189 let offset_calc = calculate_offset ( increment, offset, false ) ;
11821190 let doc = & util:: replace_suffix ( & description, & brief_suffix) ;
11831191 let first_name = svd:: array:: names ( f, de) . next ( ) . unwrap ( ) ;
1184- let array_doc =
1185- format ! ( "{doc}\n \n NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
1192+ let note = format ! ( "NOTE: `n` is number of field in register. `n == 0` corresponds to `{first_name}` field" ) ;
11861193 let dim = unsuffixed ( de. dim ) ;
11871194 w_impl_items. extend ( quote ! {
1188- #[ doc = #array_doc]
1195+ #[ doc = #doc]
1196+ #[ doc = "" ]
1197+ #[ doc = #note]
11891198 #inline
11901199 #[ must_use]
11911200 pub fn #name_snake_case( & mut self , n: u8 ) -> #writer_ty<#regspec_ident> {
0 commit comments