Deny rust warnings by default.

* "-D warnings" means "deny all warnings" and make them errors.
* Modules with warnings should fix all warnings or use
        deny_warnings: false

Bug: 141699953
Test: mm in projects with Rust modules
Change-Id: I6310dee8e34b7780937e8fc1834016a04a943a2f
diff --git a/rust/compiler.go b/rust/compiler.go
index f45744b..6c603df 100644
--- a/rust/compiler.go
+++ b/rust/compiler.go
@@ -25,7 +25,8 @@
 func NewBaseCompiler(dir, dir64 string) *baseCompiler {
 	return &baseCompiler{
 		Properties: BaseCompilerProperties{
-			Edition: &config.DefaultEdition,
+			Edition:       &config.DefaultEdition,
+			Deny_warnings: config.DefaultDenyWarnings,
 		},
 		dir:   dir,
 		dir64: dir64,
@@ -33,6 +34,9 @@
 }
 
 type BaseCompilerProperties struct {
+	// whether to pass "-D warnings" to rustc. Defaults to true.
+	Deny_warnings *bool
+
 	// flags to pass to rustc
 	Flags []string `android:"path,arch_variant"`
 
@@ -109,6 +113,9 @@
 
 func (compiler *baseCompiler) compilerFlags(ctx ModuleContext, flags Flags) Flags {
 
+	if Bool(compiler.Properties.Deny_warnings) {
+		flags.RustFlags = append(flags.RustFlags, "-D warnings")
+	}
 	flags.RustFlags = append(flags.RustFlags, compiler.Properties.Flags...)
 	flags.RustFlags = append(flags.RustFlags, compiler.featuresToFlags(compiler.Properties.Features)...)
 	flags.RustFlags = append(flags.RustFlags, "--edition="+*compiler.Properties.Edition)