Hi everyone ![]()
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 ![]()