third_party/rust: initialize, add mdbook

As we want to use [mdbook](https://github.com/rust-lang/mdBook) to build
documentation, we now have to pull it into the monorepo, alongside
support for Rust in general.

Testing plan: bazel run //third_party/rust:cargo_bin_mdbook. The CI
should also pick this up now.

Change-Id: I6cf5d02d926bb0de61a5c882828accd35f3a1076
Reviewed-on: https://review.monogon.dev/c/monogon/+/201
Reviewed-by: Leopold Schabel <leo@nexantic.com>
diff --git a/third_party/rust/cargo/remote/BUILD.mdbook-0.4.10.bazel b/third_party/rust/cargo/remote/BUILD.mdbook-0.4.10.bazel
new file mode 100644
index 0000000..34708ef
--- /dev/null
+++ b/third_party/rust/cargo/remote/BUILD.mdbook-0.4.10.bazel
@@ -0,0 +1,265 @@
+"""
+@generated
+cargo-raze crate build file.
+
+DO NOT EDIT! Replaced on runs of cargo-raze
+"""
+
+# buildifier: disable=load
+load("@bazel_skylib//lib:selects.bzl", "selects")
+
+# buildifier: disable=load
+load(
+    "@rules_rust//rust:rust.bzl",
+    "rust_binary",
+    "rust_library",
+    "rust_test",
+)
+
+package(default_visibility = [
+    # Public for visibility by "@raze__crate__version//" targets.
+    #
+    # Prefer access through "//third_party/rust/cargo", which limits external
+    # visibility to explicit Cargo.toml dependencies.
+    "//visibility:public",
+])
+
+licenses([
+    "reciprocal",  # MPL-2.0 from expression "MPL-2.0"
+])
+
+# Generated Targets
+
+rust_binary(
+    # Prefix bin name to disambiguate from (probable) collision with lib name
+    # N.B.: The exact form of this is subject to change.
+    name = "cargo_bin_mdbook",
+    srcs = glob(["**/*.rs"]),
+    crate_features = [
+        "ammonia",
+        "default",
+        "elasticlunr-rs",
+        "futures-util",
+        "gitignore",
+        "notify",
+        "search",
+        "serve",
+        "tokio",
+        "warp",
+        "watch",
+    ],
+    crate_root = "src/main.rs",
+    data = [] + [
+        "src/theme/playground_editor/editor.js",
+        "src/theme/playground_editor/ace.js",
+        "src/theme/playground_editor/mode-rust.js",
+        "src/theme/playground_editor/theme-dawn.js",
+        "src/theme/playground_editor/theme-tomorrow_night.js",
+        "src/theme/fonts/fonts.css",
+        "src/theme/fonts/OPEN-SANS-LICENSE.txt",
+        "src/theme/fonts/SOURCE-CODE-PRO-LICENSE.txt",
+        "src/theme/fonts/open-sans-v17-all-charsets-300.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-300italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-regular.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-600.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-600italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-700.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-700italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-800.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-800italic.woff2",
+        "src/theme/fonts/source-code-pro-v11-all-charsets-500.woff2",
+        "src/theme/searcher/searcher.js",
+        "src/theme/searcher/mark.min.js",
+        "src/theme/searcher/elasticlunr.min.js",
+        "src/theme/index.hbs",
+        "src/theme/head.hbs",
+        "src/theme/redirect.hbs",
+        "src/theme/header.hbs",
+        "src/theme/css/chrome.css",
+        "src/theme/css/general.css",
+        "src/theme/css/print.css",
+        "src/theme/css/variables.css",
+        "src/theme/favicon.png",
+        "src/theme/favicon.svg",
+        "src/theme/book.js",
+        "src/theme/highlight.js",
+        "src/theme/tomorrow-night.css",
+        "src/theme/highlight.css",
+        "src/theme/ayu-highlight.css",
+        "src/theme/clipboard.min.js",
+        "src/theme/FontAwesome/css/font-awesome.min.css",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.eot",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.svg",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.ttf",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.woff",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.woff2",
+        "src/theme/FontAwesome/fonts/FontAwesome.otf",
+    ],
+    edition = "2018",
+    proc_macro_deps = [
+        "@raze__serde_derive__1_0_126//:serde_derive",
+    ],
+    rustc_env = {
+        "PATH": "/usr/bin",
+    },
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-raze",
+        "manual",
+    ],
+    version = "0.4.10",
+    # buildifier: leave-alone
+    deps = [
+        ":mdbook",
+        "@raze__ammonia__3_1_1//:ammonia",
+        "@raze__anyhow__1_0_41//:anyhow",
+        "@raze__chrono__0_4_19//:chrono",
+        "@raze__clap__2_33_3//:clap",
+        "@raze__elasticlunr_rs__2_3_13//:elasticlunr_rs",
+        "@raze__env_logger__0_7_1//:env_logger",
+        "@raze__futures_util__0_3_15//:futures_util",
+        "@raze__gitignore__1_0_7//:gitignore",
+        "@raze__handlebars__4_0_1//:handlebars",
+        "@raze__lazy_static__1_4_0//:lazy_static",
+        "@raze__log__0_4_14//:log",
+        "@raze__memchr__2_4_0//:memchr",
+        "@raze__notify__4_0_17//:notify",
+        "@raze__open__1_7_0//:open",
+        "@raze__pulldown_cmark__0_7_2//:pulldown_cmark",
+        "@raze__regex__1_5_4//:regex",
+        "@raze__serde__1_0_126//:serde",
+        "@raze__serde_json__1_0_64//:serde_json",
+        "@raze__shlex__1_0_0//:shlex",
+        "@raze__tempfile__3_2_0//:tempfile",
+        "@raze__tokio__0_2_25//:tokio",
+        "@raze__toml__0_5_8//:toml",
+        "@raze__warp__0_2_5//:warp",
+    ],
+)
+
+# Unsupported target "nop-preprocessor" with type "example" omitted
+
+rust_library(
+    name = "mdbook",
+    srcs = glob(["**/*.rs"]),
+    crate_features = [
+        "ammonia",
+        "default",
+        "elasticlunr-rs",
+        "futures-util",
+        "gitignore",
+        "notify",
+        "search",
+        "serve",
+        "tokio",
+        "warp",
+        "watch",
+    ],
+    crate_root = "src/lib.rs",
+    crate_type = "lib",
+    data = [] + [
+        "src/theme/playground_editor/editor.js",
+        "src/theme/playground_editor/ace.js",
+        "src/theme/playground_editor/mode-rust.js",
+        "src/theme/playground_editor/theme-dawn.js",
+        "src/theme/playground_editor/theme-tomorrow_night.js",
+        "src/theme/fonts/fonts.css",
+        "src/theme/fonts/OPEN-SANS-LICENSE.txt",
+        "src/theme/fonts/SOURCE-CODE-PRO-LICENSE.txt",
+        "src/theme/fonts/open-sans-v17-all-charsets-300.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-300italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-regular.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-600.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-600italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-700.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-700italic.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-800.woff2",
+        "src/theme/fonts/open-sans-v17-all-charsets-800italic.woff2",
+        "src/theme/fonts/source-code-pro-v11-all-charsets-500.woff2",
+        "src/theme/searcher/searcher.js",
+        "src/theme/searcher/mark.min.js",
+        "src/theme/searcher/elasticlunr.min.js",
+        "src/theme/index.hbs",
+        "src/theme/head.hbs",
+        "src/theme/redirect.hbs",
+        "src/theme/header.hbs",
+        "src/theme/css/chrome.css",
+        "src/theme/css/general.css",
+        "src/theme/css/print.css",
+        "src/theme/css/variables.css",
+        "src/theme/favicon.png",
+        "src/theme/favicon.svg",
+        "src/theme/book.js",
+        "src/theme/highlight.js",
+        "src/theme/tomorrow-night.css",
+        "src/theme/highlight.css",
+        "src/theme/ayu-highlight.css",
+        "src/theme/clipboard.min.js",
+        "src/theme/FontAwesome/css/font-awesome.min.css",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.eot",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.svg",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.ttf",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.woff",
+        "src/theme/FontAwesome/fonts/fontawesome-webfont.woff2",
+        "src/theme/FontAwesome/fonts/FontAwesome.otf",
+    ],
+    edition = "2018",
+    proc_macro_deps = [
+        "@raze__serde_derive__1_0_126//:serde_derive",
+    ],
+    rustc_env = {
+        "PATH": "/usr/bin",
+    },
+    rustc_flags = [
+        "--cap-lints=allow",
+    ],
+    tags = [
+        "cargo-raze",
+        "manual",
+    ],
+    version = "0.4.10",
+    # buildifier: leave-alone
+    deps = [
+        "@raze__ammonia__3_1_1//:ammonia",
+        "@raze__anyhow__1_0_41//:anyhow",
+        "@raze__chrono__0_4_19//:chrono",
+        "@raze__clap__2_33_3//:clap",
+        "@raze__elasticlunr_rs__2_3_13//:elasticlunr_rs",
+        "@raze__env_logger__0_7_1//:env_logger",
+        "@raze__futures_util__0_3_15//:futures_util",
+        "@raze__gitignore__1_0_7//:gitignore",
+        "@raze__handlebars__4_0_1//:handlebars",
+        "@raze__lazy_static__1_4_0//:lazy_static",
+        "@raze__log__0_4_14//:log",
+        "@raze__memchr__2_4_0//:memchr",
+        "@raze__notify__4_0_17//:notify",
+        "@raze__open__1_7_0//:open",
+        "@raze__pulldown_cmark__0_7_2//:pulldown_cmark",
+        "@raze__regex__1_5_4//:regex",
+        "@raze__serde__1_0_126//:serde",
+        "@raze__serde_json__1_0_64//:serde_json",
+        "@raze__shlex__1_0_0//:shlex",
+        "@raze__tempfile__3_2_0//:tempfile",
+        "@raze__tokio__0_2_25//:tokio",
+        "@raze__toml__0_5_8//:toml",
+        "@raze__warp__0_2_5//:warp",
+    ],
+)
+
+# Unsupported target "alternative_backends" with type "test" omitted
+
+# Unsupported target "build_process" with type "test" omitted
+
+# Unsupported target "custom_preprocessors" with type "test" omitted
+
+# Unsupported target "init" with type "test" omitted
+
+# Unsupported target "parse_existing_summary_files" with type "test" omitted
+
+# Unsupported target "rendered_output" with type "test" omitted
+
+# Unsupported target "testing" with type "test" omitted