Updates rust_test to use main.rs as the root when use_libtest_harness is false (#1518)

diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl
index 6ebfbea..4bcf648 100644
--- a/rust/private/rust.bzl
+++ b/rust/private/rust.bzl
@@ -458,7 +458,8 @@
         )
     else:
         if not crate_root:
-            crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, "lib")
+            crate_root_type = "lib" if ctx.attr.use_libtest_harness else "bin"
+            crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, crate_root_type)
 
         output_hash = determine_output_hash(crate_root, ctx.label)
         output = ctx.actions.declare_file(
diff --git a/test/unit/use_libtest_harness/main.rs b/test/unit/use_libtest_harness/main.rs
new file mode 100644
index 0000000..f328e4d
--- /dev/null
+++ b/test/unit/use_libtest_harness/main.rs
@@ -0,0 +1 @@
+fn main() {}
diff --git a/test/unit/use_libtest_harness/use_libtest_harness_test.bzl b/test/unit/use_libtest_harness/use_libtest_harness_test.bzl
index 87296a5..32c51e6 100644
--- a/test/unit/use_libtest_harness/use_libtest_harness_test.bzl
+++ b/test/unit/use_libtest_harness/use_libtest_harness_test.bzl
@@ -24,8 +24,19 @@
     assert_list_contains_adjacent_elements(env, action.argv, ["--cfg", "test"])
     return analysistest.end(env)
 
+def _use_libtest_harness_rustc_noharness_main_flags_test_impl(ctx):
+    env = analysistest.begin(ctx)
+    tut = analysistest.target_under_test(env)
+    action = tut.actions[0]
+    assert_action_mnemonic(env, action, "Rustc")
+    assert_argv_contains(env, action, "test/unit/use_libtest_harness/main.rs")
+    assert_argv_contains_not(env, action, "--test")
+    assert_list_contains_adjacent_elements(env, action.argv, ["--cfg", "test"])
+    return analysistest.end(env)
+
 use_libtest_harness_rustc_flags_test = analysistest.make(_use_libtest_harness_rustc_flags_test_impl)
 use_libtest_harness_rustc_noharness_flags_test = analysistest.make(_use_libtest_harness_rustc_noharness_flags_test_impl)
+use_libtest_harness_rustc_noharness_main_flags_test = analysistest.make(_use_libtest_harness_rustc_noharness_main_flags_test_impl)
 
 def _use_libtest_harness_test():
     rust_test(
@@ -41,6 +52,16 @@
         use_libtest_harness = False,
     )
 
+    rust_test(
+        name = "mytest_noharness_main",
+        srcs = [
+            "main.rs",
+            "mytest.rs",
+        ],
+        edition = "2018",
+        use_libtest_harness = False,
+    )
+
     use_libtest_harness_rustc_flags_test(
         name = "use_libtest_harness_rustc_flags_test",
         target_under_test = ":mytest",
@@ -51,6 +72,11 @@
         target_under_test = ":mytest_noharness",
     )
 
+    use_libtest_harness_rustc_noharness_main_flags_test(
+        name = "use_libtest_harness_rustc_noharness_main_flags_test",
+        target_under_test = ":mytest_noharness_main",
+    )
+
 def use_libtest_harness_test_suite(name):
     """Entry-point macro called from the BUILD file.