Combine include-pick loop
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 69f0144..0514554 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -155,19 +155,19 @@
                 Some(U8) | Some(U16) | Some(U32) | Some(U64) | Some(I8) | Some(I16) | Some(I32)
                 | Some(I64) => out.include.cstdint = true,
                 Some(Usize) => out.include.cstddef = true,
+                Some(Isize) => {
+                    out.include.basetsd = true;
+                    out.builtin.rust_isize = true;
+                }
                 Some(CxxString) => out.include.string = true,
-                Some(Bool) | Some(Isize) | Some(F32) | Some(F64) | Some(RustString) | None => {}
+                Some(RustString) => {
+                    out.include.array = true;
+                    out.include.cstdint = true;
+                    out.include.string = true;
+                    out.builtin.rust_string = true;
+                }
+                Some(Bool) | Some(F32) | Some(F64) | None => {}
             },
-            Type::RustBox(_) => out.include.type_traits = true,
-            Type::UniquePtr(_) => out.include.memory = true,
-            Type::CxxVector(_) => out.include.vector = true,
-            Type::SliceRefU8(_) => out.include.cstdint = true,
-            _ => {}
-        }
-    }
-
-    for ty in out.types {
-        match ty {
             Type::RustBox(_) => {
                 out.include.new = true;
                 out.include.type_traits = true;
@@ -181,26 +181,22 @@
                 out.builtin.rust_vec = true;
                 out.builtin.unsafe_bitcopy = true;
             }
+            Type::UniquePtr(_) => out.include.memory = true,
             Type::Str(_) => {
                 out.include.cstdint = true;
                 out.include.string = true;
                 out.builtin.rust_str = true;
             }
+            Type::CxxVector(_) => out.include.vector = true,
             Type::Fn(_) => {
                 out.builtin.rust_fn = true;
             }
-            Type::Slice(_) | Type::SliceRefU8(_) => {
+            Type::Slice(_) => {
                 out.builtin.rust_slice = true;
             }
-            ty if ty == Isize => {
-                out.include.basetsd = true;
-                out.builtin.rust_isize = true;
-            }
-            ty if ty == RustString => {
-                out.include.array = true;
+            Type::SliceRefU8(_) => {
                 out.include.cstdint = true;
-                out.include.string = true;
-                out.builtin.rust_string = true;
+                out.builtin.rust_slice = true;
             }
             _ => {}
         }