pub fn add_traversal_excludes<'b>(
        &mut self,
        excludes: impl IntoIterator<Item = &'b PackageId>,
    ) -> Result<&mut Self, guppy::Error> {
        let traversal_exclude: Vec<&'g PackageId> = excludes
            .into_iter()
            .map(|package_id| Ok(self.graph.metadata(package_id)?.id()))
            .collect::<Result<_, _>>()?;
        self.traversal_excludes.extend(traversal_exclude);
        Ok(self)
    }
Pretends that the provided packages don't exist during graph traversals.

Users may wish to not consider certain packages while figuring out the unified feature set.
Setting this option prevents those packages from being considered.

Practically, this means that:
* If a workspace package is specified, Cargo build simulations for it will not be run.
* If a third-party package is specified, it will not be present in the output, nor will
any transitive dependencies or features enabled by it that aren't enabled any other way.
In other words, any packages excluded during traversal are also [excluded from the final
output](Self::add_final_excludes).

Returns an error if any package IDs specified aren't known to the graph.
tools/hakari/src/hakari.rs