Squashed 'third_party/rules_rust/' content from commit bf59038ca

git-subtree-dir: third_party/rules_rust
git-subtree-split: bf59038cac11798cbaef9f3bf965bad8182b97fa
Signed-off-by: Brian Silverman <bsilver16384@gmail.com>
Change-Id: I5a20e403203d670df467ea97dde9a4ac40339a8d
diff --git a/crate_universe/src/utils.rs b/crate_universe/src/utils.rs
new file mode 100644
index 0000000..8953c81
--- /dev/null
+++ b/crate_universe/src/utils.rs
@@ -0,0 +1,15 @@
+//! Common utilities
+
+pub mod starlark;
+
+/// Convert a string into a valid crate module name by applying transforms to invalid characters
+pub fn sanitize_module_name(name: &str) -> String {
+    name.replace('-', "_")
+}
+
+/// Some character which may be present in version IDs are not valid
+/// in Bazel repository names. This converts invalid characters. See
+/// [RepositoryName.java](https://github.com/bazelbuild/bazel/blob/4.0.0/src/main/java/com/google/devtools/build/lib/cmdline/RepositoryName.java#L42)
+pub fn sanitize_repository_name(name: &str) -> String {
+    name.replace('+', "-")
+}