Last active
June 7, 2025 14:53
-
-
Save deadalusai/9e13e36d61ec7fb72148 to your computer and use it in GitHub Desktop.
VS Code tasks.json for Rust/Cargo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| Before using this tasks.json you may like to consider trying one of the following VS Code extensions: | |
| rust-analyzer | |
| Marketplace: https://marketplace.visualstudio.com/items?itemName=matklad.rust-analyzer | |
| Source: https://github.com/rust-analyzer/rust-analyzer | |
| rls | |
| Marketplace: https://marketplace.visualstudio.com/items?itemName=rust-lang.rust | |
| Source: https://github.com/rust-lang/rls-vscode | |
| */ | |
| // Available variables which can be used inside of strings. | |
| // ${workspaceRoot}: the root folder of the team | |
| // ${file}: the current opened file | |
| // ${fileBasename}: the current opened file's basename | |
| // ${fileDirname}: the current opened file's dirname | |
| // ${fileExtname}: the current opened file's extension | |
| // ${cwd}: the current working directory of the spawned process | |
| { | |
| "version": "2.0.0", | |
| "tasks": [ | |
| { | |
| "label": "build", | |
| "args": ["build", "-v"], | |
| "command": "cargo", | |
| "group": "build", | |
| "problemMatcher": [ | |
| { | |
| "owner": "rust", | |
| "fileLocation": ["relative", "${workspaceRoot}"], | |
| "pattern": { | |
| "regexp": "^(.*):(\\d+):(\\d+):\\s+(\\d+):(\\d+)\\s+(warning|error):\\s+(.*)$", | |
| "file": 1, | |
| "line": 2, | |
| "column": 3, | |
| "endLine": 4, | |
| "endColumn": 5, | |
| "severity": 6, | |
| "message": 7 | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "clean", | |
| "args": ["clean"], | |
| "command": "cargo", | |
| "presentation": { | |
| "reveal": "always" | |
| } | |
| }, | |
| { | |
| "label": "run", | |
| "args": ["run", "-v"], | |
| "command": "cargo", | |
| "presentation": { | |
| "reveal": "always" | |
| }, | |
| "group": { | |
| "kind": "build", | |
| "isDefault": true | |
| }, | |
| "problemMatcher": [ | |
| { | |
| "owner": "rust", | |
| "fileLocation": ["relative", "${workspaceRoot}"], | |
| "pattern": { | |
| "regexp": "^(.*):(\\d+):(\\d+):\\s+(\\d+):(\\d+)\\s+(warning|error):\\s+(.*)$", | |
| "file": 1, | |
| "line": 2, | |
| "column": 3, | |
| "endLine": 4, | |
| "endColumn": 5, | |
| "severity": 6, | |
| "message": 7 | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "test", | |
| "args": ["test"], | |
| "command": "cargo", | |
| "presentation": { | |
| "reveal": "always" | |
| }, | |
| "group": { | |
| "kind": "z", | |
| "isDefault": false | |
| }, | |
| "problemMatcher": [ | |
| { | |
| "owner": "rust", | |
| "fileLocation": ["relative", "${workspaceRoot}"], | |
| "pattern": { | |
| "regexp": "^(.*):(\\d+):(\\d+):\\s+(\\d+):(\\d+)\\s+(warning|error):\\s+(.*)$", | |
| "file": 1, | |
| "line": 2, | |
| "column": 3, | |
| "endLine": 4, | |
| "endColumn": 5, | |
| "severity": 6, | |
| "message": 7 | |
| } | |
| }, | |
| { | |
| "owner": "rust", | |
| "fileLocation": ["relative", "${workspaceRoot}"], | |
| "severity": "error", | |
| "pattern": { | |
| "regexp": "^.*panicked\\s+at\\s+'(.*)',\\s+(.*):(\\d+)$", | |
| "message": 1, | |
| "file": 2, | |
| "line": 3 | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "label": "bench", | |
| "args": ["bench"], | |
| "command": "cargo", | |
| "presentation": { | |
| "reveal": "always" | |
| }, | |
| "group": "test", | |
| "problemMatcher": [ | |
| { | |
| "owner": "rust", | |
| "fileLocation": ["relative", "${workspaceRoot}"], | |
| "pattern": { | |
| "regexp": "^(.*):(\\d+):(\\d+):\\s+(\\d+):(\\d+)\\s+(warning|error):\\s+(.*)$", | |
| "file": 1, | |
| "line": 2, | |
| "column": 3, | |
| "endLine": 4, | |
| "endColumn": 5, | |
| "severity": 6, | |
| "message": 7 | |
| } | |
| }, | |
| { | |
| "owner": "rust", | |
| "fileLocation": ["relative", "${workspaceRoot}"], | |
| "severity": "error", | |
| "pattern": { | |
| "regexp": "^.*panicked\\s+at\\s+'(.*)',\\s+(.*):(\\d+)$", | |
| "message": 1, | |
| "file": 2, | |
| "line": 3 | |
| } | |
| } | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
(On Linux Mint) I find the tasks in the $project/.vscode/tasks.json files quite useful. After all, VS code allows to set keyboard shortcuts (Ctrl+K) to open the task selection popup (Ctrl+P / Tasks: RunTask) and to re-run the last task (Ctrl+P / Tasks: Rerun Last Task). Same with $project/.vscode/launch.json - just hit F5 to start debugging. In a project with plenty of source files it tends to get a little tedious having to find the entry point, and then to click on Codelens' links - i.e. "Run" or "Debug".
@mbartelsm
$rust-panic,$rustc,$rustc-json,$rustc-watch."type": "cargo",{//- $project/.vscode/tasks.json {//- run "cargo test" "label": "test", "group": "test", "type": "cargo", "command": "test", "args": [], "presentation": { "reveal": "always" }, "problemMatcher": ..., } }@epenabella
Thanks for the hints on launch.json. However, the following also seems to work.
{//- $project/.vscode/launch.json "version": "0.2.0", "configurations": [ { "name": "debug rust", "type": "lldb", "request": "launch", "preLaunchTask": "build",//- name of the task in tasks.json "program": "${workspaceFolder}/target/debug/rust-test", "args": [], "cwd": "${workspaceFolder}", "console": "integratedTerminal", }, ] }Anyways, thanks to all for this gist!