问题
I have installed the Visual Studio Code extensions for Rust:
I want to run my project and I don't understand where to click.
I tried clicking Run Task, Run build task, Configure Default build task, but nothing reasonable happens.
回答1:
Using the integrated terminal
Shortcut to run the integrated terminal: Ctrl + ` (Ctrl + backtick)
Run the following command in the integrated terminal:
cargo run
Notes: Open the Code editor from your project folder ( code . command inside project folder terminal, or in GUI mode: right-click inside project folder and select Open With Code) then press Ctrl + ` ( Ctrl + backtick ) to open integrated terminal, then enter: cargo run
Using Tasks
Shortcut to run the Task: Ctrl + Shift + B
Add cargo run as a default Task: add .vscode/tasks.json file to your project as follows, to use cargo run to run the project, change the contents of .vscode/tasks.json as follows:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "cargo run",
"type": "shell",
"command": "cargo",
"args": ["run"],
// "args": ["run", "--release", "--", "arg1"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
Now press Ctrl + Shift + B to run the Task, or Press Ctrl + Shift + P and select Tasks: Run Build Task from the Command Palette.
You may add arguments like the comment above e.g.: "args": ["run", "--release", "--", "arg1"], (if your app requires it).
(You may open the Command Palette with Ctrl + Shift + P and type in Configure Default Build Task and press Enter to select it. Then select Rust: cargo build or Others. This generates a tasks.json file in your workspace .vscode folder).
Using Code Runner
Install Code Runner extension, then open the source file then you will have a play button in the top right corner to click, or use default shortcut: Ctrl+Alt+N (You may change the shortcut from: File>Preferences>Keyboard Shortcuts and enter code-runner.run in the search box).
Note: To run the command inside terminal You may set code-runner.runInTerminal to true from File>Preferences>Settings (or press Ctrl+,), then enter code-runner.runInTerminal in the search box.
Edit: This runs only open file e.g.: rustc main.rs. You may edit the code-runner.executorMap to change the command from:
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
to:
"rust": "cargo run",
So the Code Runner runs the cargo run command each time you click the Play button (or pressing keyboard shortcut):
From menu: File>Preferences>Settings (or press Ctrl+,) then inside search box, enter:code-runner.executorMap then click Edit in Settings.json then edit "code-runner.executorMap": and change "rust":"cd $dir && rustc $fileName && $dir$fileNameWithoutExt" to "rust": "cargo run".
Or simply add 3 following lines to VSCode settings JSON (settings.json file):
"code-runner.executorMap": {
"rust": "cargo run # $fileName"
}
Using Code Runner custom command
You may set the custom command to run: "code-runner.customCommand": "cargo run"
Menu: File>Preferences>Settings (or press Ctrl+,) then inside search box, enter customCommand and set the custom command to run: cargo run.
You may change Shortcut to this command for ease of use: From Menu select: File>Preferences>Keyboard Shortcuts, then inside search box enter: customCommand, then add/change keybinding e.g. press: Ctrl+L Ctrl+R
Using the rust-lang.rust extension
You may install this extension from the command line using:
code --install-extension rust-lang.rust
The plugin uses tasks: You may press Ctrl + Shift + B then select options presented, for now, there are only two options:
cargo check
cargo build
So you need to use the cargo run Task presented above (tasks.json file).
Using the vscode-rust extension
Install with Ctrl+P and type "ext install vscode-rust". Run with Ctrl+Shift+P, type "cargo" then select "Cargo:Run".
Edit: You may add Shortcut to this command for ease of use:
From Menu select: File>Preferences>Keyboard Shortcuts, then inside search box enter: Cargo:Run, then add keybinding e.g. press: Ctrl+L Ctrl+R, and if you are using this extension in non RLS mode to run Cargo command in terminal: you may set "rust.executeCargoCommandInTerminal": true in File>Preferences>Settings menu (or press Ctrl+,) then enter executeCargoCommandInTerminal inside search box.
回答2:
Unfortunately there isn't a good solution at the moment. Basically you have to add a task to tasks.json, which begins like this:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "cargo",
"subcommand": "check",
"problemMatcher": [
"$rustc"
]
},
{
"type": "cargo",
"subcommand": "build",
"problemMatcher": [
"$rustc"
]
}
]
}
A.R. suggested adding another identical entry but with "subcommand": "run" but it doesn't work. You get this error:
Error: The cargo task detection didn't contribute a task for the following configuration:
{
"type": "cargo",
"subcommand": "run",
"problemMatcher": [
"$rustc"
]
}
The task will be ignored.
Instead you can add a "type": "shell" task. However this still isn't perfect because for some reason adding that task means cargo check and cargo build don't show up when you press Ctrl-Shift-B at all.
My solution is just to change those to shell tasks too, so your entire tasks.json is:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cargo check",
"command": "cargo",
"args": [
"check"
],
"problemMatcher": [
"$rustc"
],
"group": "build"
},
{
"type": "shell",
"label": "cargo build",
"command": "cargo",
"args": [
"build"
],
"problemMatcher": [
"$rustc"
],
"group": "build"
},
{
"type": "shell",
"label": "cargo run",
"command": "cargo",
"args": [
"run"
],
"problemMatcher": [
"$rustc"
],
"group": "build"
}
]
}
回答3:
I was able to get this working using the VSC extension, Rust (rls), using a modified version of AR's post:
"tasks": [
{
"type": "shell",
"label": "cargo run",
"command": "wsl",
"args": [
"--",
"~/.cargo/bin/cargo",
"run"
],
"problemMatcher": [
"$rustc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
回答4:
If you want to run a Rust application in Visual Studio Code with command line arguments, you can configure your task in this way:
{
"label":"Run With Arguments",
"type":"process",
"command":"cargo",
"group":"none",
"args":[
"run",
{
"value":"--",
"quoting":"weak"
},
{
"value":"--argumentOne=\"Something\"",
"quoting":"weak"
},
{
"value":"--argumentTwo=\"Something\"",
"quoting":"weak"
}
]
}
With the addition of "--" and weak quoting, you can pass arguments to your application.
来源:https://stackoverflow.com/questions/46885292/how-to-launch-a-rust-application-from-visual-studio-code