Rollup merge of #78581 - a1phyr:const_btree_more, r=dtolnay

Constantify more BTreeMap and BTreeSet functions

Just because we can:

- `BTreeMap::len`
- `BTreeMap::is_empty`
- `BTreeSet::len`
- `BTreeSet::is_empty`

Note that I put the `const` under `const_btree_new`, because I don't think their is a need to create another feature flag for that.

cc #71835
This commit is contained in:
Mara Bos
2020-10-31 09:49:39 +01:00
committed by GitHub
4 changed files with 22 additions and 4 deletions
+4 -2
View File
@@ -2188,7 +2188,8 @@ pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> {
/// assert_eq!(a.len(), 1);
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
pub fn len(&self) -> usize {
#[rustc_const_unstable(feature = "const_btree_new", issue = "71835")]
pub const fn len(&self) -> usize {
self.length
}
@@ -2207,7 +2208,8 @@ pub fn len(&self) -> usize {
/// assert!(!a.is_empty());
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
pub fn is_empty(&self) -> bool {
#[rustc_const_unstable(feature = "const_btree_new", issue = "71835")]
pub const fn is_empty(&self) -> bool {
self.len() == 0
}
@@ -1527,6 +1527,13 @@ fn vacant_entry<T: Send + Ord + Default>(v: &mut BTreeMap<T, T>) -> impl Send +
}
}
#[allow(dead_code)]
fn test_const() {
const MAP: &'static BTreeMap<(), ()> = &BTreeMap::new();
const LEN: usize = MAP.len();
const IS_EMPTY: bool = MAP.is_empty();
}
#[test]
fn test_occupied_entry_key() {
let mut a = BTreeMap::new();
+4 -2
View File
@@ -950,7 +950,8 @@ pub fn iter(&self) -> Iter<'_, T> {
/// assert_eq!(v.len(), 1);
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
pub fn len(&self) -> usize {
#[rustc_const_unstable(feature = "const_btree_new", issue = "71835")]
pub const fn len(&self) -> usize {
self.map.len()
}
@@ -967,7 +968,8 @@ pub fn len(&self) -> usize {
/// assert!(!v.is_empty());
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
pub fn is_empty(&self) -> bool {
#[rustc_const_unstable(feature = "const_btree_new", issue = "71835")]
pub const fn is_empty(&self) -> bool {
self.len() == 0
}
}
@@ -15,6 +15,13 @@ fn test_clone_eq() {
assert_eq!(m.clone(), m);
}
#[allow(dead_code)]
fn test_const() {
const SET: &'static BTreeSet<()> = &BTreeSet::new();
const LEN: usize = SET.len();
const IS_EMPTY: bool = SET.is_empty();
}
#[test]
fn test_iter_min_max() {
let mut a = BTreeSet::new();