Skip to content

Commit 334e96b

Browse files
committed
review suggestions
1 parent ceef529 commit 334e96b

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

hugr-core/src/envelope.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,12 @@ pub fn read_envelope(
171171
/// - `reader`: The reader to read the envelope from.
172172
/// - `registry`: An extension registry with additional extensions to use when
173173
/// decoding the HUGR, if they are not already included in the package.
174+
///
175+
/// # Errors
176+
/// - [`ReadError::EnvelopeHeader`] if there was an error reading the envelope header.
177+
/// - [`ReadError::Payload`] if there was an error reading the package payload,
178+
/// including a partial description of the envelope read before the error occurred.
179+
///
174180
// TODO deprecate and rename to read_envelope when removing old version
175181
pub fn read_described_envelope(
176182
reader: impl BufRead,
@@ -384,7 +390,7 @@ pub enum EnvelopeError {
384390
/// Error raised while checking for breaking extension version mismatch.
385391
#[deprecated(since = "0.24.1")]
386392
#[error(transparent)]
387-
#[allow(deprecated)]
393+
#[expect(deprecated)]
388394
ExtensionVersion {
389395
/// The source error.
390396
#[from]

hugr-core/src/envelope/description.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
150151
pub 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.
189190
pub 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

Comments
 (0)