Updated crate_universe setup guide (#1202)

* Updated crate_universe setup guide

* Regenerate documentation
diff --git a/crate_universe/3rdparty/BUILD.bazel b/crate_universe/3rdparty/BUILD.bazel
index 1f0b8ee..d6d92ce 100644
--- a/crate_universe/3rdparty/BUILD.bazel
+++ b/crate_universe/3rdparty/BUILD.bazel
@@ -16,5 +16,8 @@
 
 filegroup(
     name = "bzl_srcs",
-    srcs = glob(["*.bzl"]),
+    srcs = glob(["*.bzl"]) + [
+        "//crate_universe/3rdparty/crates:crates.bzl",
+        "//crate_universe/3rdparty/crates:defs.bzl",
+    ],
 )
diff --git a/crate_universe/BUILD.bazel b/crate_universe/BUILD.bazel
index 6ef161c..c20f7ee 100644
--- a/crate_universe/BUILD.bazel
+++ b/crate_universe/BUILD.bazel
@@ -34,6 +34,7 @@
     srcs = glob(["*.bzl"]) + [
         "//crate_universe/3rdparty:bzl_srcs",
         "//crate_universe/private:bzl_srcs",
+        "//crate_universe/tools:bzl_srcs",
     ],
     visibility = ["//visibility:public"],
 )
diff --git a/crate_universe/README.md b/crate_universe/README.md
index 2654173..300ff4b 100644
--- a/crate_universe/README.md
+++ b/crate_universe/README.md
@@ -1,6 +1,6 @@
-# Cargo->Bazel
+# Crate Universe
 
-`cargo->bazel` is a tool used which uses [Cargo][cargo] to generate build targets for [Bazel][bazel].
+`crate_universe` is a collection of tools which use [Cargo][cargo] to generate build targets for [Bazel][bazel].
 
 ## [Documentation][docs]
 
diff --git a/crate_universe/crates.bzl b/crate_universe/crates.bzl
index 40dc413..752b8d1 100644
--- a/crate_universe/crates.bzl
+++ b/crate_universe/crates.bzl
@@ -1,10 +1,12 @@
 """A module defining dependencies of the `cargo-bazel` Rust target"""
 
 load("@rules_rust//rust:defs.bzl", "rust_common")
-load("//crate_universe:defs.bzl", "crate", "crates_repository", "crates_vendor")
 load("//crate_universe:deps_bootstrap.bzl", "cargo_bazel_bootstrap")
 load("//crate_universe/3rdparty:third_party_deps.bzl", "third_party_deps")
 load("//crate_universe/3rdparty/crates:crates.bzl", _vendor_crate_repositories = "crate_repositories")
+load("//crate_universe/private:crate.bzl", "crate")
+load("//crate_universe/private:crates_repository.bzl", "crates_repository")
+load("//crate_universe/private:crates_vendor.bzl", "crates_vendor")
 load("//crate_universe/private:vendor_utils.bzl", "crates_vendor_deps")
 load("//crate_universe/tools/cross_installer:cross_installer_deps.bzl", "cross_installer_deps")
 
diff --git a/crate_universe/defs.bzl b/crate_universe/defs.bzl
index 13060e8..285895c 100644
--- a/crate_universe/defs.bzl
+++ b/crate_universe/defs.bzl
@@ -6,13 +6,28 @@
 
 `crate_universe` is experimental, and may have breaking API changes at any time. These instructions may also change without notice.
 
+## Setup
+
+After loading `rules_rust` in your workspace, set the following to begin using `crate_universe`:
+
+```python
+load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository")
+
+crate_deps_repository()
+```
+
+Note that if the current version of `rules_rust` is not a release artifact, you may need to set additional
+flags such as [`bootstrap = True`](#crate_deps_repository-bootstrap) on the `crate_deps_repository`
+call above or [crates_repository::generator_urls](#crates_repository-generator_urls) in uses of `crates_repository`.
+
 ## Rules
 
+- [crate_deps_repository](#crate_deps_repository)
 - [crates_repository](#crates_repository)
 - [crates_vendor](#crates_vendor)
+- [crate.annotation](#crateannotation)
 - [crate.spec](#cratespec)
 - [crate.workspace_member](#crateworkspace_member)
-- [crate.annotation](#crateannotation)
 - [render_config](#render_config)
 - [splicing_config](#splicing_config)
 
@@ -142,9 +157,14 @@
 [cc]: https://docs.bazel.build/versions/main/be/c-cpp.html
 [proto]: https://rules-proto-grpc.com/en/latest/lang/rust.html
 [ra]: https://rust-analyzer.github.io/
+
 """
 
 load(
+    "//crate_universe:crates.bzl",
+    _crate_deps_repository = "crate_deps_repository",
+)
+load(
     "//crate_universe/private:crate.bzl",
     _crate = "crate",
 )
@@ -166,6 +186,7 @@
 )
 
 crate = _crate
+crate_deps_repository = _crate_deps_repository
 crates_repository = _crates_repository
 crates_vendor = _crates_vendor
 render_config = _render_config
diff --git a/crate_universe/tools/BUILD.bazel b/crate_universe/tools/BUILD.bazel
index d465c4d..6c6d0b7 100644
--- a/crate_universe/tools/BUILD.bazel
+++ b/crate_universe/tools/BUILD.bazel
@@ -6,3 +6,11 @@
     ],
     visibility = ["//crate_universe:__subpackages__"],
 )
+
+filegroup(
+    name = "bzl_srcs",
+    srcs = [
+        "//crate_universe/tools/cross_installer:bzl_srcs",
+    ],
+    visibility = ["//crate_universe:__subpackages__"],
+)
diff --git a/crate_universe/tools/cross_installer/BUILD.bazel b/crate_universe/tools/cross_installer/BUILD.bazel
index 46aa087..ecf6616 100644
--- a/crate_universe/tools/cross_installer/BUILD.bazel
+++ b/crate_universe/tools/cross_installer/BUILD.bazel
@@ -35,3 +35,9 @@
     ],
     visibility = ["//crate_universe/tools:__pkg__"],
 )
+
+filegroup(
+    name = "bzl_srcs",
+    srcs = glob(["**/*.bzl"]),
+    visibility = ["//crate_universe/tools:__pkg__"],
+)
diff --git a/docs/BUILD.bazel b/docs/BUILD.bazel
index 6c7e39c..ca77136 100644
--- a/docs/BUILD.bazel
+++ b/docs/BUILD.bazel
@@ -13,6 +13,7 @@
     ],
     deps = [
         "@bazel_skylib//lib:paths",
+        "@bazel_skylib//lib:selects",
         "@bazel_skylib//rules:common_settings",
         "@rules_proto//proto:defs",
         "@rules_proto//proto:repositories",
diff --git a/docs/crate_universe.md b/docs/crate_universe.md
index 4dfcd5d..6579ef1 100644
--- a/docs/crate_universe.md
+++ b/docs/crate_universe.md
@@ -8,13 +8,28 @@
 
 `crate_universe` is experimental, and may have breaking API changes at any time. These instructions may also change without notice.
 
+## Setup
+
+After loading `rules_rust` in your workspace, set the following to begin using `crate_universe`:
+
+```python
+load("@rules_rust//crate_universe:crates.bzl", "crate_deps_repository")
+
+crate_deps_repository()
+```
+
+Note that if the current version of `rules_rust` is not a release artifact, you may need to set additional
+flags such as [`bootstrap = True`](#crate_deps_repository-bootstrap) on the `crate_deps_repository`
+call above or [crates_repository::generator_urls](#crates_repository-generator_urls) in uses of `crates_repository`.
+
 ## Rules
 
+- [crate_deps_repository](#crate_deps_repository)
 - [crates_repository](#crates_repository)
 - [crates_vendor](#crates_vendor)
+- [crate.annotation](#crateannotation)
 - [crate.spec](#cratespec)
 - [crate.workspace_member](#crateworkspace_member)
-- [crate.annotation](#crateannotation)
 - [render_config](#render_config)
 - [splicing_config](#splicing_config)
 
@@ -146,6 +161,7 @@
 [ra]: https://rust-analyzer.github.io/
 
 
+
 <a id="#crates_repository"></a>
 
 ## crates_repository
@@ -336,6 +352,25 @@
 string: A json encoded string of all inputs
 
 
+<a id="#crate_deps_repository"></a>
+
+## crate_deps_repository
+
+<pre>
+crate_deps_repository(<a href="#crate_deps_repository-rust_version">rust_version</a>, <a href="#crate_deps_repository-bootstrap">bootstrap</a>)
+</pre>
+
+Define dependencies of the `cargo-bazel` Rust target
+
+**PARAMETERS**
+
+
+| Name  | Description | Default Value |
+| :------------- | :------------- | :------------- |
+| <a id="crate_deps_repository-rust_version"></a>rust_version |  The version of rust to use when generating dependencies.   |  <code>"1.59.0"</code> |
+| <a id="crate_deps_repository-bootstrap"></a>bootstrap |  If true, a <code>cargo_bootstrap_repository</code> target will be generated.   |  <code>False</code> |
+
+
 <a id="#render_config"></a>
 
 ## render_config