Cargo Tools - VSCode/Open VSX extension

Hi everyone :waving_hand:

I’ve recently published version 0.6.0 of Cargo Tools to the VSCode Marketplace and Open VSX.

It's an extension that complements rust-analyzer with a UI for common Rust and Cargo workflows, particularly in multi-package workspaces and supports cargo make and the xtask pattern.

It lets you:

  • Select packages, profiles, targets, and Cargo features
  • Browse workspace packages and build targets
  • Build, run, debug, test, benchmark, and clean from project views
  • Run cargo-make tasks and Cargo aliases/xtasks
  • Pin frequently used tasks as shortcuts

What makes the extension unique on the technical side is that most of it is written in Rust rather than TypeScript.

The platform-independent Cargo logic lives in a regular Rust library. The extension layer is compiled to WebAssembly and communicates with the VS Code extension API through wasm-bindgen bindings and a small TypeScript bridge.

Internally, the extension uses the iced_viewless runtime which applies the asynchronous Elm-style architecture from iced. This allows it to run the extension's event loop inside the extension host.

The architecture looks roughly like this:

VS Code / Theia extension host
            ↕
  TypeScript API bridge
            ↕ wasm-bindgen
   Rust extension compiled to Wasm
            ↕
 Platform-independent Cargo library

I hope this might be useful or educational to someone and would appreciate any kind of feedback :slight_smile:

Repo: GitHub - NickelWenzel/cargo-tools: VSCode/OpenVSX extension for easy configuration of Rust projects · GitHub

3 Likes