Skip to main content

impl_parse_result

Macro impl_parse_result 

Source
macro_rules! impl_parse_result {
    ($type:ty, $dep_type:ty {
        dependencies: $dependencies:ident,
        uri: $uri:ident
        $(, workspace_root: $workspace_root:ident)?
        $(, dependency_truncation: $dependency_truncation:ident)?
        $(, blocked_registries: $blocked_registries:ident)?
        $(, rejected_registries: $rejected_registries:ident)?
        $(,)?
    }) => { ... };
}
Expand description

Implement ParseResult trait for a struct.

§Arguments

  • $type - The struct type name
  • $dep_type - The dependency type that implements Dependency
  • dependencies - Field name for dependencies vec (Vec<DepType>)
  • uri - Field name for document URI (Url)
  • workspace_root - Optional: field name for workspace root (Option<PathBuf>)
  • dependency_truncation - Optional: field name for the Option<(usize, usize)> ecosystem::ParseResult::dependency_truncation override (#796) — omit when the parser has no crate::DependencyBudget wired in yet (the trait default None applies).
  • blocked_registries - Optional: field name for the Vec<BlockedRegistryOccurrence> ecosystem::ParseResult::blocked_registries override (#925, #969), read via .clone() — omit when the ecosystem enforces no configurable-registry reachability policy (the trait default empty Vec applies).
  • rejected_registries - Optional: field name for the Vec<RejectedRegistryOccurrence> ecosystem::ParseResult::rejected_registries override (#1438), read via .clone() — omit when the ecosystem produces no InvalidEntry-based rejections beyond the blocked-host case (the trait default empty Vec applies).

All optional fields are given in the fixed order shown above — workspace_root, then dependency_truncation, then blocked_registries, then rejected_registries — any subset may be omitted, but a present field cannot appear out of order.

§Examples

ⓘ
use deps_core::impl_parse_result;

pub struct MyParseResult {
    pub dependencies: Vec<MyDependency>,
    pub uri: Url,
    pub dependency_truncation: Option<(usize, usize)>,
}

impl_parse_result!(MyParseResult, MyDependency {
    dependencies: dependencies,
    uri: uri,
});

// With workspace root and/or dependency-truncation tracking:
impl_parse_result!(MyParseResult, MyDependency {
    dependencies: dependencies,
    uri: uri,
    workspace_root: workspace_root,
    dependency_truncation: dependency_truncation,
});

// With a policy-blocked-registry override too:
impl_parse_result!(MyParseResult, MyDependency {
    dependencies: dependencies,
    uri: uri,
    dependency_truncation: dependency_truncation,
    blocked_registries: blocked_registries,
});