@@ -1418,6 +1418,146 @@ fn test_variance() {
14181418 }
14191419}
14201420
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+
14211561#[ test]
14221562fn test_occupied_entry_key ( ) {
14231563 let mut a = BTreeMap :: new ( ) ;
0 commit comments