Vscode-code-runner: Configuration: code-runner.executorMap for "rust": "cargo run" uses file names as an argument e.g.: `cargo run "c:\ar\rs\sors\src\main.rs"` the correct answer is `cargo run`

Created on 30 Dec 2018  Â·  6Comments  Â·  Source: formulahendry/vscode-code-runner

  • VS Code Version: x64 1.30.1 dea8705087adb1b5e5ae1d9123278e178656186a
  • OS Version: Microsoft Windows [Version 10.0.17134.345]
  • Code Runner Version: 0.9.5

Describe the bug
Description of what the bug is.
After editing Configuration: code-runner.executorMap from:
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
to:
"rust": "cargo run",
When clicking play button, code-runner command runs:
cargo run "c:\ar\rs\sors\src\main.rs"
The correct command is:
cargo run
note: without extra arguments.
if you put any thing after cargo run it will be used as user program argument, so the correct way to run is just cargo run.

To Reproduce
Steps to reproduce the behavior:


  1. set:
    "code-runner.executorMap": {
    "rust": "cargo run",
    },
  2. and run this file "main.rs" (prints arguments list):

    use std::env;
    fn main() {
    for argument in env::args() {
    println!(" {}", argument);
    }
    }

output is:
cargo run "c:\ar\rs\sors\src\main.rs"
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
Running target\debug\sors.exe c:\ar\rs\sors\src\main.rs
target\debug\sors.exe
c:\ar\rs\sors\src\main.rs

Expected behavior
cargo run


Thank you.

Most helpful comment

Thanks, I'm using this for Linux now:

  "code-runner.executorMap": {
    "rust": "cargo run # $fileName",
  },

All 6 comments

a workaround is using "code-runner.customCommand" to set custom command, but that is not by language

@aramazani
On Windows you can use such config:

"code-runner.executorMap": {
    "rust": "cargo run && echo $fileName > nul"
}

By using variable in string, code-runner will not inject filename.

Thanks, I'm using this for Linux now:

  "code-runner.executorMap": {
    "rust": "cargo run # $fileName",
  },

I had this issue as well; for me, just ending the line with a comment works, which allows the rest of the line to be ignored by the shell:

cargo run # "path/to/main.rs"

This works on Windows with PowerShell as integrated terminal, and should work on bash/zsh/fish as well.

@formulahendry If you can add a $empty that put nothing in the command line. That will be awesome!

谢谢,我现在正在Linux上使用它:

  "code-runner.executorMap": {
    "rust": "cargo run # $fileName",
  },

It;s OK, thank you.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

seiferthan picture seiferthan  Â·  4Comments

w3adventures picture w3adventures  Â·  3Comments

bhavinkamani picture bhavinkamani  Â·  4Comments

spacesuitdiver picture spacesuitdiver  Â·  3Comments

rana picture rana  Â·  5Comments