Skip to content

Commit cc9ae53

Browse files
committed
Declare unsafe all functions that debug_assert something other than shared roots, or (fn insert) turn debug_assert into assert
1 parent 182af10 commit cc9ae53

File tree

2 files changed

+233
-258
lines changed

2 files changed

+233
-258
lines changed

src/liballoc/collections/btree/map.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ impl<K: Ord, V> BTreeMap<K, V> {
624624
match self.length {
625625
0 => None,
626626
_ => Some(OccupiedEntry {
627-
handle: self.root.as_mut().first_kv(),
627+
handle: unsafe { self.root.as_mut().first_kv() },
628628
length: &mut self.length,
629629
_marker: PhantomData,
630630
}),
@@ -686,7 +686,7 @@ impl<K: Ord, V> BTreeMap<K, V> {
686686
match self.length {
687687
0 => None,
688688
_ => Some(OccupiedEntry {
689-
handle: self.root.as_mut().last_kv(),
689+
handle: unsafe { self.root.as_mut().last_kv() },
690690
length: &mut self.length,
691691
_marker: PhantomData,
692692
}),
@@ -1052,7 +1052,7 @@ impl<K: Ord, V> BTreeMap<K, V> {
10521052
Ok(left) => left,
10531053
Err(_) => unreachable!(),
10541054
};
1055-
last_kv.bulk_steal_left(node::MIN_LEN - right_child_len);
1055+
unsafe { last_kv.bulk_steal_left(node::MIN_LEN - right_child_len) };
10561056
last_edge = last_kv.right_edge();
10571057
}
10581058

@@ -1118,7 +1118,7 @@ impl<K: Ord, V> BTreeMap<K, V> {
11181118
GoDown(handle) => handle,
11191119
};
11201120

1121-
split_edge.move_suffix(&mut right_node);
1121+
unsafe { split_edge.move_suffix(&mut right_node) };
11221122

11231123
match (split_edge.force(), right_node.force()) {
11241124
(Internal(edge), Internal(node)) => {
@@ -1188,7 +1188,7 @@ impl<K: Ord, V> BTreeMap<K, V> {
11881188
break;
11891189
}
11901190
}
1191-
self.root.pop_level();
1191+
unsafe { self.root.pop_level() };
11921192
}
11931193
}
11941194

@@ -1199,15 +1199,15 @@ impl<K: Ord, V> BTreeMap<K, V> {
11991199
let mut cur_node = self.root.as_mut();
12001200

12011201
while let Internal(node) = cur_node.force() {
1202-
let mut last_kv = node.last_kv();
1202+
let mut last_kv = unsafe { node.last_kv() };
12031203

12041204
if last_kv.can_merge() {
1205-
cur_node = last_kv.merge().descend();
1205+
cur_node = unsafe { last_kv.merge() }.descend();
12061206
} else {
12071207
let right_len = last_kv.reborrow().right_edge().descend().len();
12081208
// `MINLEN + 1` to avoid readjust if merge happens on the next level.
12091209
if right_len < node::MIN_LEN + 1 {
1210-
last_kv.bulk_steal_left(node::MIN_LEN + 1 - right_len);
1210+
unsafe { last_kv.bulk_steal_left(node::MIN_LEN + 1 - right_len) };
12111211
}
12121212
cur_node = last_kv.right_edge().descend();
12131213
}
@@ -1225,14 +1225,14 @@ impl<K: Ord, V> BTreeMap<K, V> {
12251225
let mut cur_node = self.root.as_mut();
12261226

12271227
while let Internal(node) = cur_node.force() {
1228-
let mut first_kv = node.first_kv();
1228+
let mut first_kv = unsafe { node.first_kv() };
12291229

12301230
if first_kv.can_merge() {
1231-
cur_node = first_kv.merge().descend();
1231+
cur_node = unsafe { first_kv.merge().descend() };
12321232
} else {
12331233
let left_len = first_kv.reborrow().left_edge().descend().len();
12341234
if left_len < node::MIN_LEN + 1 {
1235-
first_kv.bulk_steal_right(node::MIN_LEN + 1 - left_len);
1235+
unsafe { first_kv.bulk_steal_right(node::MIN_LEN + 1 - left_len) };
12361236
}
12371237
cur_node = first_kv.left_edge().descend();
12381238
}
@@ -2614,7 +2614,7 @@ impl<'a, K: Ord, V> OccupiedEntry<'a, K, V> {
26142614
Merged(parent) => {
26152615
if parent.len() == 0 {
26162616
// We must be at the root
2617-
parent.into_root_mut().pop_level();
2617+
unsafe { parent.into_root_mut().pop_level() };
26182618
break;
26192619
} else {
26202620
cur_node = parent.forget_type();
@@ -2655,7 +2655,7 @@ fn handle_underfull_node<K, V>(
26552655
};
26562656

26572657
if handle.can_merge() {
2658-
Merged(handle.merge().into_node())
2658+
Merged(unsafe { handle.merge() }.into_node())
26592659
} else {
26602660
if is_left {
26612661
handle.steal_left();

0 commit comments

Comments
 (0)