Commit 684e2aa
committed
Rollup merge of rust-lang#32699 - bluss:slice-memcmp, r=alexcrichton
Specialize equality for [T] and comparison for [u8] to use memcmp when possible
Specialize equality for [T] and comparison for [u8] to use memcmp when possible
Where T is a type that can be compared for equality bytewise, we can use
memcmp. We can also use memcmp for PartialOrd, Ord for [u8].
Use specialization to call memcmp in PartialEq for slices for certain element types. This PR does not change the user visible API since the implementation uses an intermediate trait. See commit messages for more information.
The memcmp signature was changed from `*const i8` to `*const u8` which is in line with how the memcmp function is defined in C (taking const void * arguments, interpreting the values as unsigned bytes for purposes of the comparison).4 files changed
+179
-44
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
574 | 574 | | |
575 | 575 | | |
576 | 576 | | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
577 | 607 | | |
578 | | - | |
| 608 | + | |
579 | 609 | | |
580 | | - | |
| 610 | + | |
581 | 611 | | |
582 | | - | |
| 612 | + | |
583 | 613 | | |
584 | | - | |
| 614 | + | |
585 | 615 | | |
586 | | - | |
| 616 | + | |
587 | 617 | | |
588 | | - | |
| 618 | + | |
589 | 619 | | |
590 | 620 | | |
591 | 621 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
| 78 | + | |
78 | 79 | | |
79 | 80 | | |
80 | 81 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1630 | 1630 | | |
1631 | 1631 | | |
1632 | 1632 | | |
1633 | | - | |
| 1633 | + | |
1634 | 1634 | | |
1635 | 1635 | | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
1636 | 1647 | | |
1637 | 1648 | | |
1638 | 1649 | | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
1639 | 1687 | | |
1640 | 1688 | | |
1641 | 1689 | | |
| |||
1648 | 1696 | | |
1649 | 1697 | | |
1650 | 1698 | | |
1651 | | - | |
| 1699 | + | |
| 1700 | + | |
1652 | 1701 | | |
1653 | 1702 | | |
1654 | 1703 | | |
| |||
1663 | 1712 | | |
1664 | 1713 | | |
1665 | 1714 | | |
1666 | | - | |
1667 | | - | |
| 1715 | + | |
| 1716 | + | |
| 1717 | + | |
| 1718 | + | |
| 1719 | + | |
| 1720 | + | |
| 1721 | + | |
| 1722 | + | |
| 1723 | + | |
| 1724 | + | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
1668 | 1729 | | |
1669 | | - | |
1670 | | - | |
1671 | | - | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
1672 | 1745 | | |
1673 | 1746 | | |
1674 | 1747 | | |
| |||
1677 | 1750 | | |
1678 | 1751 | | |
1679 | 1752 | | |
1680 | | - | |
1681 | | - | |
| 1753 | + | |
| 1754 | + | |
1682 | 1755 | | |
1683 | 1756 | | |
1684 | 1757 | | |
1685 | 1758 | | |
1686 | | - | |
| 1759 | + | |
1687 | 1760 | | |
1688 | 1761 | | |
1689 | 1762 | | |
1690 | | - | |
1691 | | - | |
1692 | | - | |
| 1763 | + | |
| 1764 | + | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
1693 | 1780 | | |
1694 | 1781 | | |
1695 | 1782 | | |
| |||
1698 | 1785 | | |
1699 | 1786 | | |
1700 | 1787 | | |
1701 | | - | |
1702 | | - | |
| 1788 | + | |
| 1789 | + | |
1703 | 1790 | | |
1704 | 1791 | | |
1705 | 1792 | | |
1706 | 1793 | | |
1707 | | - | |
| 1794 | + | |
1708 | 1795 | | |
1709 | 1796 | | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1150 | 1150 | | |
1151 | 1151 | | |
1152 | 1152 | | |
1153 | | - | |
1154 | | - | |
1155 | | - | |
1156 | | - | |
1157 | | - | |
1158 | | - | |
1159 | | - | |
1160 | | - | |
1161 | | - | |
1162 | | - | |
| 1153 | + | |
1163 | 1154 | | |
1164 | 1155 | | |
1165 | 1156 | | |
| |||
1328 | 1319 | | |
1329 | 1320 | | |
1330 | 1321 | | |
1331 | | - | |
1332 | | - | |
| 1322 | + | |
1333 | 1323 | | |
1334 | 1324 | | |
1335 | 1325 | | |
| |||
1340 | 1330 | | |
1341 | 1331 | | |
1342 | 1332 | | |
1343 | | - | |
1344 | | - | |
1345 | | - | |
1346 | | - | |
1347 | | - | |
1348 | | - | |
1349 | | - | |
1350 | | - | |
1351 | | - | |
1352 | | - | |
| 1333 | + | |
1353 | 1334 | | |
1354 | 1335 | | |
1355 | 1336 | | |
| |||
0 commit comments