Как запустить приложение Rust из кода Visual Studio?

Я установил расширения кода Visual Studio для Rust:

enter image description here

Я хочу запустить свой проект, и я не понимаю, где нажать.

enter image description here

Я попытался нажать " Выполнить задачу", " Выполнить задачу сборки", " Настроить задачу сборки по умолчанию", но ничего разумного не произошло.

Ответы

Ответ 1

Использование встроенного терминала

Ярлык для запуска встроенного терминала: Ctrl + '(Ctrl + backtick)
Выполните следующую команду во встроенном терминале:

cargo run

Примечания. Откройте редактор кода из папки вашего проекта (команда code . внутри терминала папки проекта или в режиме графического интерфейса: щелкните правой кнопкой мыши в папке проекта и выберите Open With Code), затем нажмите Ctrl + '(Ctrl + backtick), чтобы открыть интегрированный терминал, затем введите: cargo run


Использование задач

Ярлык для запуска Задачи: Ctrl + Shift + B
Добавьте cargo run в качестве Задачи по умолчанию: добавьте файл .vscode/tasks.json в ваш проект следующим образом, чтобы использовать cargo run для запуска проекта, измените содержимое .vscode/tasks.json следующим образом:

{
  // 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
      }
    }
  ]
}

Теперь нажмите Ctrl + Shift + B, чтобы запустить задание, или нажмите Ctrl + Shift + P и выберите Tasks: Run Build Task в палитре команд.

Вы можете добавить аргументы, такие как комментарий выше, например: "args": ["run", "--release", "--", "arg1"], (если ваше приложение требует этого).

(Вы можете открыть палитру команд с помощью Ctrl + Shift + P, ввести Configure Default Build Task и нажать Enter, чтобы выбрать его. Затем выберите Rust: cargo build или Others. В результате в вашем рабочем пространстве .vscode будет создан файл tasks.json.).


Использование Code Runner

Установите расширение Code Runner, затем откройте исходный файл, затем у вас будет кнопка воспроизведения в правом верхнем углу, чтобы нажать, или используйте ярлык по умолчанию: Ctrl+Alt+N (Вы можете изменить ярлык из: File>Preferences>Keyboard Shortcuts и введите code-runner.run в поле поиска).
Примечание. Для запуска команды внутри терминала Вы можете установить code-runner.runInTerminal на true из File>Preferences>Settings (или нажать Ctrl+,), а затем ввести code-runner.runInTerminal в поле поиска.
Изменить: запускается только открытый файл, например: rustc main.rs. Вы можете отредактировать code-runner.executorMap, чтобы изменить команду с:

"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",

в:

"rust": "cargo run",

Таким образом, Code Runner запускает команду cargo run каждый раз, когда вы нажимаете кнопку Play (или нажимаете сочетание клавиш):
Из меню: File>Preferences>Settings (или нажмите Ctrl+,), затем в поле поиска введите:
code-runner.executorMap, затем нажмите Edit in Settings.json, затем отредактируйте "code-runner.executorMap": and change "rust":"cd $dir && rustc $fileName && $dir$fileNameWithoutExt" в "rust": "cargo run".

Или просто добавьте 3 следующие строки в JSON настроек VSCode (файл settings.json):

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

Использование пользовательской команды Code Runner

Вы можете настроить выполнение пользовательской команды: "code-runner.customCommand": "cargo run"
Меню: File>Preferences>Settings (или нажмите Ctrl+,), затем в поле поиска введите customCommand и установите для запуска настраиваемую команду: cargo run. Вы можете изменить Ярлык на эту команду для простоты использования: В меню выберите: File>Preferences>Keyboard Shortcuts, затем в поле поиска введите: customCommand, затем добавьте/измените связывание клавиш, например. нажмите: Ctrl+L Ctrl+R


Использование rust-lang.rust расширения

Вы можете установить это расширение из командной строки, используя:

code --install-extension rust-lang.rust

Плагин использует задачи: вы можете нажать Ctrl + Shift + B, а затем выбрать представленные опции, на данный момент есть только две опции:

cargo check
cargo build

Итак, вам нужно использовать задачу cargo run, представленную выше (файл tasks.json).


Использование vscode-rust расширения

Установите с помощью Ctrl + P и введите "ext install vscode-rust". Запустите Ctrl + Shift + P, введите "груз", затем выберите "Груз: Выполнить".

Изменение: Вы можете добавить ярлык для этой команды для простоты использования:
В меню выберите: File>Preferences>Keyboard Shortcuts, затем в поле поиска введите: Cargo:Run, затем добавьте привязку клавиш, например, нажмите: Ctrl+L Ctrl+R, и если вы используете это расширение в режиме без RLS для запуска команды Cargo в терминале: вы можете установить "rust.executeCargoCommandInTerminal": true в меню File>Preferences>Settings (или нажать Ctrl+,), затем ввести executeCargoCommandInTerminal в поле поиска ,

Ответ 2

К сожалению, на данный момент нет хорошего решения. По сути, вы должны добавить задачу в tasks.json, которая начинается следующим образом:

{
  // 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"
      ]
    }
  ]
}

AR предложил добавить еще одну идентичную запись, но с "subcommand": "run" но она не работает. Вы получаете эту ошибку:

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.

Вместо этого вы можете добавить задачу "type": "shell". Однако это все еще не идеально, потому что по какой-то причине добавление этой задачи означает, что cargo check cargo build не отображаются, когда вы вообще нажимаете Ctrl-Shift-B.

Мое решение - просто изменить их на задачи оболочки, поэтому весь ваш tasks.json:

{
  // 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

Я смог заставить это работать, используя расширение VSC, Rust (rls), используя модифицированную версию AR post:

"tasks": [
    {
        "type": "shell",
        "label": "cargo run",
        "command": "wsl",
        "args": [
            "--",
            "~/.cargo/bin/cargo",
             "run"
        ],
        "problemMatcher": [
            "$rustc"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]

Ответ 4

Если вы хотите запустить приложение Rust в Visual Studio Code с аргументами командной строки, вы можете настроить свою задачу следующим образом:

{
   "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"
      }
   ]
}

С добавлением "--" и слабым цитированием вы можете передавать аргументы в ваше приложение.