@@ -104,14 +104,15 @@ impl PackageDesc {
104104 Some ( generators. join ( ", " ) )
105105 }
106106
107- /// Returns an iterator over the module descriptions.
107+ /// Returns an iterator over the module descriptions. Modules with
108+ /// expected but missing descriptions yield `None`.
108109 pub fn modules ( & self ) -> impl Iterator < Item = & Option < ModuleDesc > > {
109110 self . modules . iter ( )
110111 }
111112
112- /// Returns an iterator over the packaged extension descriptions.
113- pub fn packaged_extensions ( & self ) -> impl Iterator < Item = & Option < ExtensionDesc > > {
114- self . packaged_extensions . iter ( )
113+ /// Returns an iterator over the packaged extension descriptions. Missing extensions are skipped.
114+ pub fn packaged_extensions ( & self ) -> impl Iterator < Item = & ExtensionDesc > {
115+ self . packaged_extensions . iter ( ) . flatten ( )
115116 }
116117}
117118
@@ -145,7 +146,7 @@ impl<E: AsRef<crate::Extension>> From<&E> for ExtensionDesc {
145146 }
146147}
147148
148- #[ derive( Debug , Clone , PartialEq , serde:: Serialize ) ]
149+ #[ derive( Debug , Clone , PartialEq , serde:: Serialize , serde :: Deserialize ) ]
149150/// Description of the entrypoint of a module.
150151pub struct Entrypoint {
151152 /// Node id of the entrypoint.
@@ -184,7 +185,7 @@ where
184185 serializer. serialize_str ( op_string ( op_type) . as_str ( ) )
185186}
186187
187- #[ derive( Debug , Clone , PartialEq , Default , serde:: Serialize ) ]
188+ #[ derive( Debug , Clone , PartialEq , Default , serde:: Serialize , serde :: Deserialize ) ]
188189/// High-level description of a module in a HUGR package.
189190pub struct ModuleDesc {
190191 /// Number of nodes in the module.
@@ -401,11 +402,7 @@ mod test {
401402 ) {
402403 empty_package_desc. set_packaged_extension ( 0 , test_extension. clone ( ) ) ;
403404 assert_eq ! (
404- empty_package_desc
405- . packaged_extensions( )
406- . next( )
407- . unwrap( )
408- . as_ref( ) ,
405+ empty_package_desc. packaged_extensions( ) . next( ) ,
409406 Some ( & test_extension)
410407 ) ;
411408 }
@@ -494,7 +491,7 @@ mod test {
494491
495492 let extensions: Vec < _ > = empty_package_desc. packaged_extensions ( ) . collect ( ) ;
496493 assert_eq ! ( extensions. len( ) , 1 ) ;
497- assert_eq ! ( extensions[ 0 ] . as_ref ( ) , Some ( & test_extension) ) ;
494+ assert_eq ! ( extensions[ 0 ] , & test_extension) ;
498495 }
499496
500497 #[ rstest]
0 commit comments