Generate static_assert(std::is_trivially_move..._v<...>) for all ADTs.

PiperOrigin-RevId: 538199199
diff --git a/cc_bindings_from_rs/bindings.rs b/cc_bindings_from_rs/bindings.rs
index 608c71b..f19679a 100644
--- a/cc_bindings_from_rs/bindings.rs
+++ b/cc_bindings_from_rs/bindings.rs
@@ -1703,6 +1703,7 @@
         let impl_items_cc_details = impl_items_cc_details.into_tokens(&mut prereqs);
         let fields_cc_details = fields_cc_details.into_tokens(&mut prereqs);
         prereqs.defs.insert(local_def_id);
+        prereqs.includes.insert(CcInclude::type_traits());
         CcSnippet {
             prereqs,
             tokens: quote! {
@@ -1713,6 +1714,8 @@
                 static_assert(
                     alignof(#adt_cc_name) == #alignment,
                     "Verify that struct layout didn't change since this header got generated");
+                static_assert(std::is_trivially_move_constructible_v<#adt_cc_name>);
+                static_assert(std::is_trivially_move_assignable_v<#adt_cc_name>);
                 __NEWLINE__
                 #default_ctor_cc_details
                 #copy_ctor_and_assignment_cc_details
@@ -3655,6 +3658,8 @@
                 quote! {
                     static_assert(sizeof(SomeStruct) == 8, ...);
                     static_assert(alignof(SomeStruct) == 4, ...);
+                    static_assert(std::is_trivially_move_constructible_v<SomeStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<SomeStruct>);
                     inline void SomeStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(SomeStruct, x));
                       static_assert(4 == offsetof(SomeStruct, y));
@@ -3718,6 +3723,8 @@
                 quote! {
                     static_assert(sizeof(TupleStruct) == 8, ...);
                     static_assert(alignof(TupleStruct) == 4, ...);
+                    static_assert(std::is_trivially_move_constructible_v<TupleStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<TupleStruct>);
                     inline void TupleStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(TupleStruct, __field0));
                       static_assert(4 == offsetof(TupleStruct, __field1));
@@ -3776,6 +3783,8 @@
                 quote! {
                     static_assert(sizeof(SomeStruct) == 8, ...);
                     static_assert(alignof(SomeStruct) == 4, ...);
+                    static_assert(std::is_trivially_move_constructible_v<SomeStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<SomeStruct>);
                     inline void SomeStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(SomeStruct, field2));
                       static_assert(4 == offsetof(SomeStruct, field1));
@@ -3832,6 +3841,8 @@
                 quote! {
                     static_assert(sizeof(SomeStruct) == 6, ...);
                     static_assert(alignof(SomeStruct) == 1, ...);
+                    static_assert(std::is_trivially_move_constructible_v<SomeStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<SomeStruct>);
                     inline void SomeStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(SomeStruct, field1));
                       static_assert(2 == offsetof(SomeStruct, field2));
@@ -3885,6 +3896,8 @@
                 quote! {
                     static_assert(sizeof(SomeStruct) == 8, ...);
                     static_assert(alignof(SomeStruct) == 4, ...);
+                    static_assert(std::is_trivially_move_constructible_v<SomeStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<SomeStruct>);
                     inline void SomeStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(SomeStruct, f2));
                       static_assert(4 == offsetof(SomeStruct, f1));
@@ -4319,6 +4332,8 @@
                 quote! {
                     static_assert(sizeof(SomeStruct) == 20, ...);
                     static_assert(alignof(SomeStruct) == 4, ...);
+                    static_assert(std::is_trivially_move_constructible_v<SomeStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<SomeStruct>);
                     inline void SomeStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(SomeStruct, unsupported_field));
                       static_assert(16 == offsetof(SomeStruct, successful_field));
@@ -4456,6 +4471,8 @@
                 quote! {
                     static_assert(sizeof(SomeStruct) == 4, ...);
                     static_assert(alignof(SomeStruct) == 4, ...);
+                    static_assert(std::is_trivially_move_constructible_v<SomeStruct>);
+                    static_assert(std::is_trivially_move_assignable_v<SomeStruct>);
                     inline void SomeStruct::__crubit_field_offset_assertions() {
                       static_assert(0 == offsetof(SomeStruct, zst1));
                       static_assert(0 == offsetof(SomeStruct, zst2));