@@ -1418,6 +1418,146 @@ fn test_variance() {
1418
1418
}
1419
1419
}
1420
1420
1421
+ #[ test]
1422
+ #[ allow( dead_code) ]
1423
+ fn test_sync ( ) {
1424
+ fn map < T : Sync > ( v : & BTreeMap < T , T > ) -> impl Sync + ' _ {
1425
+ v
1426
+ }
1427
+
1428
+ fn into_iter < T : Sync > ( v : BTreeMap < T , T > ) -> impl Sync {
1429
+ v. into_iter ( )
1430
+ }
1431
+
1432
+ fn into_keys < T : Sync + Ord > ( v : BTreeMap < T , T > ) -> impl Sync {
1433
+ v. into_keys ( )
1434
+ }
1435
+
1436
+ fn into_values < T : Sync + Ord > ( v : BTreeMap < T , T > ) -> impl Sync {
1437
+ v. into_values ( )
1438
+ }
1439
+
1440
+ fn drain_filter < T : Sync + Ord > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1441
+ v. drain_filter ( |_, _| false )
1442
+ }
1443
+
1444
+ fn iter < T : Sync > ( v : & BTreeMap < T , T > ) -> impl Sync + ' _ {
1445
+ v. iter ( )
1446
+ }
1447
+
1448
+ fn iter_mut < T : Sync > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1449
+ v. iter_mut ( )
1450
+ }
1451
+
1452
+ fn keys < T : Sync > ( v : & BTreeMap < T , T > ) -> impl Sync + ' _ {
1453
+ v. keys ( )
1454
+ }
1455
+
1456
+ fn values < T : Sync > ( v : & BTreeMap < T , T > ) -> impl Sync + ' _ {
1457
+ v. values ( )
1458
+ }
1459
+
1460
+ fn values_mut < T : Sync > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1461
+ v. values_mut ( )
1462
+ }
1463
+
1464
+ fn range < T : Sync + Ord > ( v : & BTreeMap < T , T > ) -> impl Sync + ' _ {
1465
+ v. range ( ..)
1466
+ }
1467
+
1468
+ fn range_mut < T : Sync + Ord > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1469
+ v. range_mut ( ..)
1470
+ }
1471
+
1472
+ fn entry < T : Sync + Ord + Default > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1473
+ v. entry ( Default :: default ( ) )
1474
+ }
1475
+
1476
+ fn occupied_entry < T : Sync + Ord + Default > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1477
+ match v. entry ( Default :: default ( ) ) {
1478
+ Occupied ( entry) => entry,
1479
+ _ => unreachable ! ( ) ,
1480
+ }
1481
+ }
1482
+
1483
+ fn vacant_entry < T : Sync + Ord + Default > ( v : & mut BTreeMap < T , T > ) -> impl Sync + ' _ {
1484
+ match v. entry ( Default :: default ( ) ) {
1485
+ Vacant ( entry) => entry,
1486
+ _ => unreachable ! ( ) ,
1487
+ }
1488
+ }
1489
+ }
1490
+
1491
+ #[ test]
1492
+ #[ allow( dead_code) ]
1493
+ fn test_send ( ) {
1494
+ fn map < T : Send > ( v : BTreeMap < T , T > ) -> impl Send {
1495
+ v
1496
+ }
1497
+
1498
+ fn into_iter < T : Send > ( v : BTreeMap < T , T > ) -> impl Send {
1499
+ v. into_iter ( )
1500
+ }
1501
+
1502
+ fn into_keys < T : Send + Ord > ( v : BTreeMap < T , T > ) -> impl Send {
1503
+ v. into_keys ( )
1504
+ }
1505
+
1506
+ fn into_values < T : Send + Ord > ( v : BTreeMap < T , T > ) -> impl Send {
1507
+ v. into_values ( )
1508
+ }
1509
+
1510
+ fn drain_filter < T : Send + Ord > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1511
+ v. drain_filter ( |_, _| false )
1512
+ }
1513
+
1514
+ fn iter < T : Send + Sync > ( v : & BTreeMap < T , T > ) -> impl Send + ' _ {
1515
+ v. iter ( )
1516
+ }
1517
+
1518
+ fn iter_mut < T : Send + Sync > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1519
+ v. iter_mut ( )
1520
+ }
1521
+
1522
+ fn keys < T : Send + Sync > ( v : & BTreeMap < T , T > ) -> impl Send + ' _ {
1523
+ v. keys ( )
1524
+ }
1525
+
1526
+ fn values < T : Send + Sync > ( v : & BTreeMap < T , T > ) -> impl Send + ' _ {
1527
+ v. values ( )
1528
+ }
1529
+
1530
+ fn values_mut < T : Send + Sync > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1531
+ v. values_mut ( )
1532
+ }
1533
+
1534
+ fn range < T : Send + Sync + Ord > ( v : & BTreeMap < T , T > ) -> impl Send + ' _ {
1535
+ v. range ( ..)
1536
+ }
1537
+
1538
+ fn range_mut < T : Send + Sync + Ord > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1539
+ v. range_mut ( ..)
1540
+ }
1541
+
1542
+ fn entry < T : Send + Ord + Default > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1543
+ v. entry ( Default :: default ( ) )
1544
+ }
1545
+
1546
+ fn occupied_entry < T : Send + Ord + Default > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1547
+ match v. entry ( Default :: default ( ) ) {
1548
+ Occupied ( entry) => entry,
1549
+ _ => unreachable ! ( ) ,
1550
+ }
1551
+ }
1552
+
1553
+ fn vacant_entry < T : Send + Ord + Default > ( v : & mut BTreeMap < T , T > ) -> impl Send + ' _ {
1554
+ match v. entry ( Default :: default ( ) ) {
1555
+ Vacant ( entry) => entry,
1556
+ _ => unreachable ! ( ) ,
1557
+ }
1558
+ }
1559
+ }
1560
+
1421
1561
#[ test]
1422
1562
fn test_occupied_entry_key ( ) {
1423
1563
let mut a = BTreeMap :: new ( ) ;
0 commit comments