rust: Only pass "-lstatic" for rlibs.

Passing '-lstatic' for dylib static dependencies results in some
unexpected bloat as the static libraries are included as
whole-archives.

For now, limit this to rlibs while we investigate.

Bug: 175886967
Bug: 179122837
Test: cd system/bt/; mma
Test: Checked size of dylibs.
Change-Id: Id8328e95771e2ca8503bc8df35248b1c39cabc8e
diff --git a/rust/rust.go b/rust/rust.go
index e1af776..0b733cc 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -896,14 +896,17 @@
 			exportDep := false
 			switch {
 			case cc.IsStaticDepTag(depTag):
-				// Link cc static libraries using "-lstatic" so rustc can reason about how to handle these
-				// (for example, bundling them into rlibs).
-				//
-				// rustc does not support linking libraries with the "-l" flag unless they are prefixed by "lib".
-				// If we need to link a library that isn't prefixed by "lib", we'll just link to it directly through
-				// linkObjects; such a library may need to be redeclared by static dependents.
-				if libName, ok := libNameFromFilePath(linkObject.Path()); ok {
-					depPaths.depFlags = append(depPaths.depFlags, "-lstatic="+libName)
+				// Only pass -lstatic for rlibs as it results in dylib bloat.
+				if lib, ok := ctx.Module().(*Module).compiler.(libraryInterface); ok && lib.rlib() {
+					// Link cc static libraries using "-lstatic" so rustc can reason about how to handle these
+					// (for example, bundling them into rlibs).
+					//
+					// rustc does not support linking libraries with the "-l" flag unless they are prefixed by "lib".
+					// If we need to link a library that isn't prefixed by "lib", we'll just link to it directly through
+					// linkObjects; such a library may need to be redeclared by static dependents.
+					if libName, ok := libNameFromFilePath(linkObject.Path()); ok {
+						depPaths.depFlags = append(depPaths.depFlags, "-lstatic="+libName)
+					}
 				}
 
 				// Add this to linkObjects to pass the library directly to the linker as well. This propagates