rust: Allow suppressing experimental warnings
diff --git a/compiler/back_end/experimental/rust/emboss_codegen_rust.py b/compiler/back_end/experimental/rust/emboss_codegen_rust.py
index f93a545..cc45f6d 100644
--- a/compiler/back_end/experimental/rust/emboss_codegen_rust.py
+++ b/compiler/back_end/experimental/rust/emboss_codegen_rust.py
@@ -949,11 +949,18 @@
 
 
 def generate_code_and_log_errors(
-    ir: ir_data.EmbossIr, color_output: ColorOutput
+    ir: ir_data.EmbossIr, color_output: ColorOutput, show_warnings: bool = True
 ) -> tuple[Source, ErrorList]:
     """Generates Rust source code and logs any resulting errors or warnings."""
     rust_source, diagnostics = generate_code(ir)
 
+    if not show_warnings:
+        diagnostics = [
+            msg_list
+            for msg_list in diagnostics
+            if any(msg.severity == error.ERROR for msg in msg_list)
+        ]
+
     if diagnostics:
         _show_errors(diagnostics, ir, color_output)
 
@@ -975,6 +982,11 @@
         "--output-file", type=str, help="Path to output rust file", required=True
     )
     parser.add_argument("--color-output", type=str, default="auto")
+    parser.add_argument(
+        "--no-experimental-warning",
+        action="store_true",
+        help="Suppress experimental warnings.",
+    )
     return parser.parse_args(argv[1:])
 
 
@@ -982,7 +994,9 @@
     with open(flags.input_file) as f:
         ir = ir_data_utils.IrDataSerializer.from_json(ir_data.EmbossIr, f.read())
 
-    rust_source, errors = generate_code_and_log_errors(ir, flags.color_output)
+    rust_source, errors = generate_code_and_log_errors(
+        ir, flags.color_output, not flags.no_experimental_warning
+    )
     if errors:
         return 1
 
diff --git a/embossc b/embossc
index 472de45..b1907f1 100755
--- a/embossc
+++ b/embossc
@@ -62,6 +62,11 @@
         default=True,
         help="Controls generation of EnumTraits by the C++ backend",
     )
+    parser.add_argument(
+        "--no-experimental-warning",
+        action="store_true",
+        help="Suppress experimental warnings",
+    )
     parser.add_argument("input_file", type=str, nargs=1, help=".emb file to compile.")
     return parser.parse_args(argv[1:])
 
@@ -74,7 +79,7 @@
             )  # pylint:disable=import-outside-toplevel
 
             return emboss_codegen_rust.generate_code_and_log_errors(
-                ir, flags.color_output
+                ir, flags.color_output, not flags.no_experimental_warning
             )
         case "cc":
             from compiler.back_end.cpp import (