mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-28 20:16:58 +03:00
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:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user