@@ -10,17 +10,17 @@ use crate::module::Module;
1010/// Representation of the wasm custom section `producers`
1111#[ derive( Debug , Default ) ]
1212pub struct ModuleProducers {
13- fields : Vec < Field > ,
13+ fields : Vec < ProducerField > ,
1414}
1515
1616#[ derive( Debug ) ]
17- struct Field {
17+ pub struct ProducerField {
1818 name : String ,
19- values : Vec < Value > ,
19+ values : Vec < ProducerValue > ,
2020}
2121
2222#[ derive( Debug ) ]
23- struct Value {
23+ pub struct ProducerValue {
2424 name : String ,
2525 version : String ,
2626}
@@ -41,8 +41,13 @@ impl ModuleProducers {
4141 self . field ( "sdk" , sdk, version) ;
4242 }
4343
44+ /// Returns the [`ProducerField`]s of this producers section
45+ pub fn fields ( & self ) -> & [ ProducerField ] {
46+ & self . fields
47+ }
48+
4449 fn field ( & mut self , field_name : & str , name : & str , version : & str ) {
45- let new_value = Value {
50+ let new_value = ProducerValue {
4651 name : name. to_string ( ) ,
4752 version : version. to_string ( ) ,
4853 } ;
@@ -60,7 +65,7 @@ impl ModuleProducers {
6065 field. values . push ( new_value) ;
6166 return ;
6267 }
63- self . fields . push ( Field {
68+ self . fields . push ( ProducerField {
6469 name : field_name. to_string ( ) ,
6570 values : vec ! [ new_value] ,
6671 } )
@@ -72,6 +77,30 @@ impl ModuleProducers {
7277 }
7378}
7479
80+ impl ProducerField {
81+ /// Returns the name of this [`ProducerField`]
82+ pub fn name ( & self ) -> & str {
83+ & self . name
84+ }
85+
86+ /// Returns the [`ProducerValue`]s of this [`ProducerField`]
87+ pub fn values ( & self ) -> & [ ProducerValue ] {
88+ & self . values
89+ }
90+ }
91+
92+ impl ProducerValue {
93+ /// Returns the name of this [`ProducerValue`]
94+ pub fn name ( & self ) -> & str {
95+ & self . name
96+ }
97+
98+ /// Returns the version of this [`ProducerValue`]
99+ pub fn version ( & self ) -> & str {
100+ & self . version
101+ }
102+ }
103+
75104impl Module {
76105 /// Parse a producers section from the custom section payload specified.
77106 pub ( crate ) fn parse_producers_section (
@@ -85,13 +114,13 @@ impl Module {
85114 let mut values = Vec :: new ( ) ;
86115 for value in field. values {
87116 let value = value?;
88- values. push ( Value {
117+ values. push ( ProducerValue {
89118 name : value. name . to_string ( ) ,
90119 version : value. version . to_string ( ) ,
91120 } ) ;
92121 }
93122 let name = field. name . to_string ( ) ;
94- self . producers . fields . push ( Field { name, values } ) ;
123+ self . producers . fields . push ( ProducerField { name, values } ) ;
95124 }
96125
97126 Ok ( ( ) )
0 commit comments