Track and query Cargo dependency graphs.
guppy provides a Rust interface to run queries over Cargo dependency graphs. guppy parses
the output of cargo metadata,
then presents a graph interface over it.
proptest010: Support for property-based testing
using the proptest framework.rayon1: Support for parallel iterators through Rayon (preliminary work
so far, more parallel iterators to be added in the future).summaries: Support for writing out build summaries.Print out all direct dependencies of a package:
```rust use guppy::{CargoMetadata, PackageId};
// guppy accepts cargo metadata JSON output. Use a pre-existing fixture for these examples.
let metadata = CargoMetadata::parsejson(includestr!("../../fixtures/small/metadata1.json")).unwrap();
let packagegraph = metadata.buildgraph().unwrap();
// guppy provides several ways to get hold of package IDs. Use a pre-defined one for this
// example.
let package_id = PackageId::new("testcrate 0.1.0 (path+file:///fakepath/testcrate)");
// The metadata method returns information about the package, or None if the package ID
// wasn't recognized.
let package = packagegraph.metadata(&packageid).unwrap();
// direct_links returns all direct dependencies of a package.
for link in package.direct_links() {
// A dependency link contains from(), to() and information about the specifics of the
// dependency.
println!("direct dependency: {}", link.to().id());
}
```
For more examples, see
the examples directory.
See the CONTRIBUTING file for how to help out.
This project is available under the terms of either the Apache 2.0 license or the MIT license.