This repository uses multiple independent Cargo workspaces (native/, wasm/, test/) to isolate code for native runtimes, WASM runtimes, and test execution.
To get full IntelliSense, diagnostics, and navigation across crates, you’ll need to configure your IDE to recognize all workspace roots.
This guide includes setup instructions for both:
⚠️ Rust Analyzer does not auto-discover multiple independent Cargo workspaces. You must explicitly link them.
Even though there is no top-level Cargo.toml, this is fine — you'll point Rust Analyzer to the actual workspace manifests.
{
"rust-analyzer.linkedProjects": [
"native/Cargo.toml",
"wasm/Cargo.toml",
"test/Cargo.toml"
],
"rust-analyzer.cargo.buildScripts.enable": true,
"rust-analyzer.checkOnSave.command": "clippy"
}📁 If
.vscode/doesn’t exist, create it in the repo root.
You should now see:
- Cross-workspace type resolution
- Auto-imports across crates
- Accurate diagnostics for
Cargo.tomlissues - Go-to-definition across the workspace boundary
- Crates that are not listed in the linked projects won’t be indexed.
- You must use
path = "../../crates/..."correctly for inter-crate dependencies. cargo test,cargo build, etc. should be run using the correct--manifest-pathif needed.
RustRover supports multiple workspaces natively, but you may need to attach them manually.
You can open map-holons/ directly, even though it doesn’t have a top-level Cargo.toml.
Under Cargo Projects, ensure you attach the following:
native/Cargo.tomlwasm/Cargo.tomltest/Cargo.toml
If any are missing:
- Click ➕ (Add) and navigate to the appropriate manifest.
Once complete, you will have:
- Cross-workspace IntelliSense
- Navigation and symbol resolution between crates
- Support for run/debug configurations per workspace
You may want to create named run/test configs:
- 🧪
Test (native)→ Run tests fromtest/ - 🧱
Build (wasm)→ Build zome crates for WASM - 🖥
Run (client)→ Run nativeholons_clienttargets
You can add these under
Run → Edit Configurations, using the correct working directory and command for each workspace.
- Use relative
path = ...inCargo.tomlto link internal crates - Avoid running
cargo build --workspacefrom repo root — use per-workspaceCargo.toml - Add
.dev/to.gitignoreif you create scratchpad files or developer-specific overrides