Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does "manifest path is a virtual manifest, but this command requires running against an actual package" mean?

I'm trying to build a Rust project (xray). When running cargo run I get the following error message

error: manifest path D:\xray\building\xray\Cargo.toml is a virtual manifest, but this command requires running against an actual package in this workspace

What exactly does this mean and how can it be solved? I'm using Cargo version 0.25.0 and Rust version 1.24.1.

like image 512
Amani Avatar asked Mar 24 '18 00:03

Amani


1 Answers

Your Cargo.toml is a virtual manifest.

In workspace manifests, if the package table is present, the workspace root crate will be treated as a normal package, as well as a workspace. If the package table is not present in a workspace manifest, it is called a virtual manifest.

When working with virtual manifests, package-related cargo commands, like cargo build, won't be available anymore. But, most of such commands support the --all option, will execute the command for all the non-virtual manifest in the workspace.

cargo run does not work, because cargo doesn't know what to run. There are two options:

  1. --manifest-path <PATH>: Path to Cargo.toml of the crate you want to run.
  2. -p, --package <SPEC>: Package you want to run.

In your case it's probably cargo run --package xray_cli

like image 51
Tim Diekmann Avatar answered Sep 25 '22 12:09

Tim Diekmann