title: How can I specify which crate `cargo run` runs by default in the root of a Cargo workspace?
body: <p>Right now I have a Cargo workspace with three members.</p>
  
  <pre><code>[workspace]
  members = [
      "foo",
      "bar",
      "baz",
  ]
  </code></pre>
  
  <p>If I run <code>cargo run</code> in the root directory, I get this error:</p>
  
  <blockquote>
    <p><strong>error</strong>: manifest path <code>/home/lukas/dev/mahboi/Cargo.toml</code> is a virtual manifest, but this command requires running against an actual package in this workspace</p>
  </blockquote>
  
  <p>That makes sense. I can run <code>cargo run -p foo</code> and it works. But the thing is: <code>foo</code> is the only crate that is executable and I will execute it very often, so it would be nice if I could just run <code>cargo run</code> and execute it. </p>
  
  <p>I tried to use the <code>default-members</code> key, but this didn't help:</p>
  
  <pre><code>default-members = ["foo"]
  </code></pre>
  
  <hr>
  
  <p>Is there another way to tell Cargo that <code>cargo run</code> should execute the <code>foo</code> crate (equivalent to running <code>cargo run</code> in the <code>foo/</code> subdirectory)? I would also accept answers that make the root crate non virtual (i.e. add a <code>[package]</code> key).</p>