Don't classify Rust static libraries as final

c5a0ec650 made an incorrect assumption that Rust static libraries,
unlike their C/C++ counterparts are always considered final which
is not actually true and has manifested as link errors in practice.
This change is effectively a revert of c5a0ec650.

Change-Id: I92c4568ec3e1ea994f11e2332b066e8300bb5716
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/10160
Reviewed-by: Brett Wilson <brettw@chromium.org>
Commit-Queue: Petr Hosek <phosek@google.com>
diff --git a/src/gn/ninja_c_binary_target_writer_unittest.cc b/src/gn/ninja_c_binary_target_writer_unittest.cc
index c4941fa..540e755 100644
--- a/src/gn/ninja_c_binary_target_writer_unittest.cc
+++ b/src/gn/ninja_c_binary_target_writer_unittest.cc
@@ -1422,14 +1422,14 @@
         "build obj/bar/bar.bar.o: cxx ../../bar/bar.cc\n"
         "\n"
         "build ./bar: link obj/bar/bar.bar.o obj/foo/libfoo.a | "
-        "obj/quux/lib4.rlib obj/qux/lib2.rlib\n"
+        "obj/baz/lib.rlib obj/quux/lib4.rlib obj/qux/lib2.rlib\n"
         "  ldflags =\n"
         "  libs =\n"
         "  frameworks =\n"
         "  swiftmodules =\n"
         "  output_extension = \n"
         "  output_dir = \n"
-        "  rlibs = obj/quux/lib4.rlib obj/qux/lib2.rlib\n";
+        "  rlibs = obj/baz/lib.rlib obj/quux/lib4.rlib obj/qux/lib2.rlib\n";
 
     std::string out_str = out.str();
     EXPECT_EQ(expected, out_str) << expected << "\n" << out_str;
diff --git a/src/gn/target.cc b/src/gn/target.cc
index c4662e0..6b28107 100644
--- a/src/gn/target.cc
+++ b/src/gn/target.cc
@@ -436,12 +436,7 @@
          output_type_ == LOADABLE_MODULE || output_type_ == ACTION ||
          output_type_ == ACTION_FOREACH || output_type_ == COPY_FILES ||
          output_type_ == CREATE_BUNDLE || output_type_ == RUST_PROC_MACRO ||
-         (output_type_ == STATIC_LIBRARY &&
-          (complete_static_lib_ ||
-           // Rust static libraries may be used from C/C++ code and therefore
-           // require all dependencies to be linked in as we cannot link their
-           // (Rust) dependencies directly as we would for C/C++.
-           source_types_used_.RustSourceUsed()));
+         (output_type_ == STATIC_LIBRARY && complete_static_lib_);
 }
 
 DepsIteratorRange Target::GetDeps(DepsIterationType type) const {