rust_tools: fix mypy type complaints

This fixes all type complaints issued by
`PYTHONPATH=.. python3 -m mypy --follow-imports=silent *.py` in this
directory.

BUG=b:314767343
TEST=mypy

Change-Id: Ic376bc75d601987e30ed30db446c2842b3fe479f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/5084477
Tested-by: George Burgess <gbiv@chromium.org>
Reviewed-by: Bob Haarman <inglorion@chromium.org>
Commit-Queue: George Burgess <gbiv@chromium.org>
diff --git a/rust_tools/auto_upload_rust_bootstrap.py b/rust_tools/auto_upload_rust_bootstrap.py
index a51e060..0123d6a 100755
--- a/rust_tools/auto_upload_rust_bootstrap.py
+++ b/rust_tools/auto_upload_rust_bootstrap.py
@@ -15,7 +15,7 @@
 import subprocess
 import sys
 import textwrap
-from typing import List, Optional, Tuple
+from typing import Dict, List, Optional, Tuple, Union
 
 import copy_rust_bootstrap
 
@@ -173,7 +173,7 @@
     rust_bootstrap: Path,
 ) -> List[Tuple[EbuildVersion, Path]]:
     ebuilds = rust_bootstrap.glob("*.ebuild")
-    versioned_ebuilds = {}
+    versioned_ebuilds: Dict[EbuildVersion, Tuple[EbuildVersion, Path]] = {}
     for ebuild in ebuilds:
         version = parse_rust_bootstrap_ebuild_version(ebuild.name)
         version_no_rev = version.without_rev()
@@ -202,7 +202,7 @@
         logging.info("Artifact at %s already exists", upload_to)
         return False
 
-    cmd = [
+    cmd: List[Union[Path, str]] = [
         copy_rust_bootstrap_script,
         prebuilt_gs_path,
     ]
diff --git a/rust_tools/copy_rust_bootstrap.py b/rust_tools/copy_rust_bootstrap.py
index 5e4f427..fd6770f 100755
--- a/rust_tools/copy_rust_bootstrap.py
+++ b/rust_tools/copy_rust_bootstrap.py
@@ -73,7 +73,7 @@
     # which is what our ebuild expects).
     tmpdir = binpkg_file.parent
 
-    def _mkstemp(suffix=None) -> str:
+    def _mkstemp(suffix=None) -> Path:
         fd, file_path = tempfile.mkstemp(dir=tmpdir, suffix=suffix)
         os.close(fd)
         return Path(file_path)
diff --git a/rust_tools/rust_watch.py b/rust_tools/rust_watch.py
index c912e49..68e7102 100755
--- a/rust_tools/rust_watch.py
+++ b/rust_tools/rust_watch.py
@@ -285,7 +285,7 @@
         return None
 
     subject_pieces = []
-    body_pieces = []
+    body_pieces: List[tiny_render.Piece] = []
 
     # Separate the sections a bit for prettier output.
     if body_pieces:
@@ -381,30 +381,30 @@
     if maybe_bug is None:
         logging.info("No bug to file")
     else:
-        title, body = maybe_bug
+        bug_title, bug_body = maybe_bug
         if opts.skip_side_effects:
             logging.info(
                 "Skipping sending bug with title %r and contents\n%s",
-                title,
-                body,
+                bug_title,
+                bug_body,
             )
         else:
             logging.info("Writing new bug")
-            file_bug(title, body)
+            file_bug(bug_title, bug_body)
 
     if maybe_email is None:
         logging.info("No email to send")
     else:
-        title, body = maybe_email
+        email_title, email_body = maybe_email
         if opts.skip_side_effects:
             logging.info(
                 "Skipping sending email with title %r and contents\n%s",
-                title,
-                tiny_render.render_html_pieces(body),
+                email_title,
+                tiny_render.render_html_pieces(email_body),
             )
         else:
             logging.info("Sending email")
-            send_email(title, body)
+            send_email(email_title, email_body)
 
     if opts.skip_state_update:
         logging.info("Skipping state update, as requested")
@@ -423,4 +423,4 @@
 
 
 if __name__ == "__main__":
-    sys.exit(main(sys.argv[1:]))
+    main(sys.argv[1:])