Change `FuncParam` to be a struct, per IRL conversations.

This is 1/n CLs to do this for most of the complex types in ir.h.

PiperOrigin-RevId: 396808764
diff --git a/rs_bindings_from_cc/ast_visitor.cc b/rs_bindings_from_cc/ast_visitor.cc
index 2d28819..7bc1886 100644
--- a/rs_bindings_from_cc/ast_visitor.cc
+++ b/rs_bindings_from_cc/ast_visitor.cc
@@ -65,8 +65,7 @@
   // TODO(hlopko): Fail when exceptions enabled?
   std::vector<FuncParam> params;
   for (const clang::ParmVarDecl* param : function_decl->parameters()) {
-    params.emplace_back(ConvertType(param->getType()),
-                        GetTranslatedName(param));
+    params.push_back({ConvertType(param->getType()), GetTranslatedName(param)});
   }
 
   ir_.Functions().emplace_back(GetTranslatedName(function_decl),
diff --git a/rs_bindings_from_cc/ast_visitor_test.cc b/rs_bindings_from_cc/ast_visitor_test.cc
index ddd2b53..73d8a69 100644
--- a/rs_bindings_from_cc/ast_visitor_test.cc
+++ b/rs_bindings_from_cc/ast_visitor_test.cc
@@ -139,10 +139,10 @@
   EXPECT_EQ(func.ReturnType().RsName(), "i32");
 
   EXPECT_THAT(func.Params(), SizeIs(2));
-  EXPECT_EQ(func.Params()[0].ParamType().RsName(), "i32");
-  EXPECT_EQ(func.Params()[0].Ident().Ident(), "a");
-  EXPECT_EQ(func.Params()[1].ParamType().RsName(), "i32");
-  EXPECT_EQ(func.Params()[1].Ident().Ident(), "b");
+  EXPECT_EQ(func.Params()[0].type.RsName(), "i32");
+  EXPECT_EQ(func.Params()[0].identifier.Ident(), "a");
+  EXPECT_EQ(func.Params()[1].type.RsName(), "i32");
+  EXPECT_EQ(func.Params()[1].identifier.Ident(), "b");
 }
 
 }  // namespace
diff --git a/rs_bindings_from_cc/ir.cc b/rs_bindings_from_cc/ir.cc
index ce94531..2a8ea54 100644
--- a/rs_bindings_from_cc/ir.cc
+++ b/rs_bindings_from_cc/ir.cc
@@ -33,8 +33,8 @@
 
 nlohmann::json FuncParam::ToJson() const {
   nlohmann::json result;
-  result["type"] = type_.ToJson();
-  result["identifier"] = identifier_.ToJson();
+  result["type"] = type.ToJson();
+  result["identifier"] = identifier.ToJson();
   return result;
 }
 
diff --git a/rs_bindings_from_cc/ir.h b/rs_bindings_from_cc/ir.h
index 3098055..48d33e4 100644
--- a/rs_bindings_from_cc/ir.h
+++ b/rs_bindings_from_cc/ir.h
@@ -90,20 +90,12 @@
 //
 // Examples:
 //    FuncParam of a C++ function `void Foo(int32_t a);` will be
-//    `FuncParam(Type("i32"), Identifier("foo"))`.
-class FuncParam {
- public:
-  explicit FuncParam(Type type, Identifier identifier)
-      : type_(std::move(type)), identifier_(std::move(identifier)) {}
-
-  const Type& ParamType() const { return type_; }
-  const Identifier& Ident() const { return identifier_; }
-
+//    `FuncParam{.type=Type("i32", "int32_t"), .identifier=Identifier("foo"))`.
+struct FuncParam {
   nlohmann::json ToJson() const;
 
- private:
-  Type type_;
-  Identifier identifier_;
+  Type type;
+  Identifier identifier;
 };
 
 // A function involved in the bindings.
diff --git a/rs_bindings_from_cc/ir_test.cc b/rs_bindings_from_cc/ir_test.cc
index 424b478..fae84b2 100644
--- a/rs_bindings_from_cc/ir_test.cc
+++ b/rs_bindings_from_cc/ir_test.cc
@@ -40,8 +40,8 @@
                {Func(Identifier(std::string("hello_world")),
                      std::string("#$mangled_name$#"),
                      Type(std::string("i32"), std::string("int")),
-                     {FuncParam(Type(std::string("i32"), std::string("int")),
-                                Identifier(std::string("arg")))},
+                     {FuncParam{Type(std::string("i32"), std::string("int")),
+                                Identifier(std::string("arg"))}},
                      /* is_inline= */ false)})
                 .ToJson(),
             expected);
diff --git a/rs_bindings_from_cc/src_code_gen_test.cc b/rs_bindings_from_cc/src_code_gen_test.cc
index 97be5b2..345af3f 100644
--- a/rs_bindings_from_cc/src_code_gen_test.cc
+++ b/rs_bindings_from_cc/src_code_gen_test.cc
@@ -21,8 +21,8 @@
         {Func(Identifier(std::string("hello_world")),
               std::string("$$mangled_name$$"),
               Type(std::string("i32"), std::string("int")),
-              {FuncParam(Type(std::string("i32"), std::string("int")),
-                         Identifier(std::string("arg")))},
+              {FuncParam{Type(std::string("i32"), std::string("int")),
+                         Identifier(std::string("arg"))}},
               /* is_inline= */ true)});
   Bindings bindings = GenerateBindings(ir);
   EXPECT_THAT(