# Argus: a Trait Debugger for Rust [![tests](https://github.com/cognitive-engineering-lab/argus/actions/workflows/ci.yml/badge.svg)](https://github.com/cognitive-engineering-lab/argus/actions/workflows/ci.yml) Argus is a tool to help you with compiler errors related to traits. If you have ever seen an error that says `the trait bound ... is not satisfied`, that is a good opportunity to use Argus. An IDE extension is available for VSCode which provides the Argus Inspection Panel. Read the [trait debugging tutorial](https://cel.cs.brown.edu/argus/) to learn more. ## Limitations > :warning: **Argus is research software and is under active development!** :warning: Argus relies on the New Trait Solver for Rust. Therefore, Argus inherits all the limitations of that solver which is also _under active development_. The New Trait Solver is known to be incomplete — while using Argus you may accidentally run into areas of Rust where the solver is limited. This does not mean that Argus is useless. The New Trait Solver is only used to type-check the current workspace and is still useful to debug a wide-range of trait errors. https://github.com/user-attachments/assets/9a544060-e8ad-455e-9831-5e5d48c96542 ## Installation Argus is available as a VSCode extension. You can install Argus from the [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=gavinleroy.argus) or the [Open VSX Registry](https://open-vsx.org/extension/gavinleroy/argus). In VSCode: - Go to the extensions panel by clicking this button in the left margin: - Search for "Argus" and click "Install". - Open a Rust workspace and wait for Argus to finish installing. ### Building from source Some additional software is needed to build Argus from source. For the TypeScript bindings, you need to install the language [Guile](https://www.gnu.org/software/guile/). The IDE requires [Depot](https://github.com/cognitive-engineering-lab/depot). Afterward run ```sh $ cargo make init-bindings $ cargo install --path crates/argus-cli $ cd ide && depot build ``` ## FAQ