@@ -1421,4 +1421,45 @@ mod tests {
1421
1421
let substruct: test_all_types:: Reader = pointers. get ( 2 ) . get_as ( ) . unwrap ( ) ;
1422
1422
:: test_util:: CheckTestMessage :: check_test_message ( substruct) ;
1423
1423
}
1424
+
1425
+ #[ test]
1426
+ fn struct_list_iterator ( ) {
1427
+ use test_capnp:: test_all_types;
1428
+ let mut message = message:: Builder :: new_default ( ) ;
1429
+ {
1430
+ let root: test_all_types:: Builder = message. init_root ( ) ;
1431
+ let mut struct_list = root. init_struct_list ( 6 ) ;
1432
+ let mut t0 = struct_list. reborrow ( ) . get ( 0 ) ;
1433
+ t0. set_u_int32_field ( 0 ) ;
1434
+
1435
+ let mut t1 = struct_list. reborrow ( ) . get ( 1 ) ;
1436
+ t1. set_u_int32_field ( 1 ) ;
1437
+
1438
+ let mut t2 = struct_list. reborrow ( ) . get ( 2 ) ;
1439
+ t2. set_u_int32_field ( 2 ) ;
1440
+
1441
+ let mut t3 = struct_list. reborrow ( ) . get ( 3 ) ;
1442
+ t3. set_u_int32_field ( 3 ) ;
1443
+
1444
+ let mut t4 = struct_list. reborrow ( ) . get ( 4 ) ;
1445
+ t4. set_u_int32_field ( 4 ) ;
1446
+
1447
+ let mut t5 = struct_list. reborrow ( ) . get ( 5 ) ;
1448
+ t5. set_u_int32_field ( 5 ) ;
1449
+ }
1450
+
1451
+ let reader = message. get_root_as_reader :: < test_all_types:: Reader > ( ) . unwrap ( ) ;
1452
+ let structs = reader. get_struct_list ( ) . unwrap ( ) ;
1453
+
1454
+ let mut iter = structs. iter ( ) ;
1455
+ assert_eq ! ( 3 , iter. nth( 3 ) . unwrap( ) . get_u_int32_field( ) ) ;
1456
+ assert_eq ! ( 4 , iter. nth( 0 ) . unwrap( ) . get_u_int32_field( ) ) ;
1457
+ assert_eq ! ( 5 , iter. nth( 0 ) . unwrap( ) . get_u_int32_field( ) ) ;
1458
+
1459
+ let mut c = 2 ;
1460
+ for s in structs. iter ( ) . skip ( 2 ) {
1461
+ assert_eq ! ( c, s. get_u_int32_field( ) ) ;
1462
+ c += 1 ;
1463
+ }
1464
+ }
1424
1465
}
0 commit comments