Rust Rules
Overview
This repository provides rules for building Rust projects with Bazel.
Basics
Protobuf
with an overview here.
Setup
To use the Rust rules, add the following to your WORKSPACE
file to add the external repositories for the Rust toolchain:
http_archive(
name = "io_bazel_rules_rust",
sha256 = "c82118824b2448b77146f1dae97b6eaa717babedad0822aca4879f3cbbf2b7b5",
strip_prefix = "rules_rust-3228ccd3814c2ad0d7307d2f87fb8ff9616149d7",
urls = [
# Master branch as of 2018-12-11
"https://github.com/bazelbuild/rules_rust/archive/3228ccd3814c2ad0d7307d2f87fb8ff9616149d7.tar.gz",
],
)
http_archive(
name = "bazel_skylib",
sha256 = "eb5c57e4c12e68c0c20bc774bfbc60a568e800d025557bc4ea022c6479acc867",
strip_prefix = "bazel-skylib-0.6.0",
url = "https://github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz",
)
load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories")
rust_repositories()
load("@io_bazel_rules_rust//:workspace.bzl", "bazel_version")
bazel_version(name = "bazel_version")
The rules are under active development, as such the lastest commit on the master branch should be used. master
currently requires Bazel >= 0.17.0.
External Dependencies
Currently the most common approach to managing external dependencies is using
cargo-raze to generate BUILD
files for Cargo crates.
Roadmap
- Improve expressiveness of features and support for Cargo's feature groups.
- Add
cargo_crate
workspace rule for pulling crates from Cargo.