workspace: add Rust EFI infrastructure

This bumps rules_rust, cleans up the toolchains with the new version.
It also adds the Prost codegen to "normal" crate set as well as a new
crate set specific to EFI. This is separate because of Rust no-std's
dependence on create feature tags.

Change-Id: Ie76e66ee83696948391420ca3b011a3a71258690
Reviewed-on: https://review.monogon.dev/c/monogon/+/2202
Tested-by: Jenkins CI
Reviewed-by: Serge Bazanski <serge@monogon.tech>
diff --git a/third_party/rust_efi/Cargo.toml b/third_party/rust_efi/Cargo.toml
new file mode 100644
index 0000000..9f98e70
--- /dev/null
+++ b/third_party/rust_efi/Cargo.toml
@@ -0,0 +1,28 @@
+[package]
+name = "compile_with_bazel"
+version = "0.0.0"
+
+# Mandatory (or Cargo tooling is unhappy)
+[lib]
+path = "fake_lib.rs"
+
+[dependencies]
+uefi = { version = "0.24.0", features = ["alloc"] }
+uefi-services = "0.21.0"
+prost = { version = "0.12", default-features = false, features = ["prost-derive"] }
+prost-types = { version = "0.12", default-features = false }
+
+[package.metadata.raze]
+workspace_path = "//third_party/rust_efi/cargo"
+package_aliases_dir = "."
+gen_workspace_prefix = "rsefi"
+targets = [
+    "x86_64-unknown-uefi",
+    "x86_64-unknown-linux-gnu", # proc macros
+]
+genmode = "Remote"
+
+[package.metadata.raze.crates.prost.'0.12.1']
+data_dependencies = [
+    "README.md",
+]