Crate cargo_metadata[][src]

Structured access to the output of cargo metadata Usually used from within a cargo-* executable

Examples

With std::env::args():

let mut args = std::env::args().skip_while(|val| !val.starts_with("--manifest-path"));

let manifest_path = match args.next() {
    Some(ref p) if p == "--manifest-path" => args.next(),
    Some(p) => Some(p.trim_left_matches("--manifest-path=").to_string()),
    None => None,
};

let _metadata = cargo_metadata::metadata(manifest_path.as_ref().map(Path::new)).unwrap();

With docopt:

const USAGE: &str = "
    Cargo metadata test function

    Usage:
      cargo_metadata [--manifest-path PATH]
";

#[derive(Debug, Deserialize)]
struct Args {
    arg_manifest_path: Option<String>,
}

let args: Args = Docopt::new(USAGE)
    .and_then(|d| d.deserialize())
    .unwrap_or_else(|e| e.exit());

let _metadata =
    cargo_metadata::metadata(args.arg_manifest_path.as_ref().map(Path::new)).unwrap();

With clap:


let matches = clap::App::new("myapp")
    .arg(
        clap::Arg::with_name("manifest-path")
            .long("manifest-path")
            .value_name("PATH")
            .takes_value(true),
    )
    .get_matches();

let _metadata =
    cargo_metadata::metadata(matches.value_of("manifest-path").map(Path::new)).unwrap();

Pass features flags


let manifest_path = Path::new("./Cargo.toml");
let features = cargo_metadata::CargoOpt::AllFeatures;
let _metadata =
cargo_metadata::metadata_run(Some(manifest_path), false, Some(features)).unwrap();

Structs

Dependency

A dependency of the main crate

Error

The Error type.

Metadata

Starting point for metadata returned by cargo metadata

Node

A node in a dependencies graph

Package

A crate

Resolve

A dependency graph

Target

A single target (lib, bin, example, ...) provided by a crate

WorkspaceMember

A workspace member. This is basically identical to cargo::core::package_id::PackageId, except that this does not use Arc internally.

Enums

CargoOpt

Cargo features flags

DependencyKind

Dependencies can come in three kinds

ErrorKind

The kind of an error.

Functions

metadata

Obtain metadata only about the root package and don't fetch dependencies

metadata_deps

Obtain metadata only about the root package and dependencies

metadata_run

The main entry point to obtaining metadata

Type Definitions

Result

Convenient wrapper around std::Result.