Skip to content

aspect-starters/rust

Repository files navigation

Aspect Bazel Starter for Rust

This repository uses Aspect Workflows to provide an excellent Bazel developer experience. It was generated from the Aspect Workflows template — create your own with aspect init (see https://aspect.build/docs/cli) or from a starter at https://github.com/aspect-starters.

Getting started

  1. Install the Aspect CLI — see https://aspect.build/docs/cli/install. The aspect command pins this workspace's CLI version (via .aspect/version.axl) and wraps Bazel, so use it in place of bazel.

  2. Set up a Bazel-based developer environment with direnv: run direnv allow and follow the prompts to bazel run //tools:bazel_env (puts the project's tools — including aspect itself — on your PATH, so an aspect installed in step 1 isn't required once direnv is active).

  3. Build and test everything:

    aspect build //...
    aspect test //...

    A small hello/ sample is included for each selected language as a starting point.

Formatting code

format is put on your PATH by bazel_env (via .envrc).

Linting code

This project uses rules_lint to run linters as Bazel aspects. The linters are configured in .aspect/config.axl and run via the Aspect CLI's lint command (not the upstream Bazel CLI), which collects the cached report files, applies fixes interactively, and sets a matching exit code.

  • Run aspect lint //... to check for lint violations.

Installing dev tools

For developers to be able to run additional CLI tools without needing manual installation:

  1. Add the tool to tools/tools.lock.json
  2. Run bazel run //tools:bazel_env (following any instructions it prints)
  3. When working within the workspace, tools will be available on the PATH

See https://aspect.build/blog/run-tools-installed-by-bazel for details.

Working with Cargo

You can run cargo outside of Bazel, using the tool installed on the PATH.

% cargo add reqwest
    Updating crates.io index
      Adding reqwest v0.12.7 to dependencies.
             Features:
             + __tls
             + charset
             + default-tls
             + h2
             + http2
             + macos-system-configuration
             25 deactivated features
    Updating crates.io index

About

Rust Bazel + Aspect Workflows starter. Generated from aspect-workflows-template.

Resources

License

Stars

Watchers

Forks

Contributors