Skip to content

Commit 1b9913b

Browse files
committed
---
yaml --- r: 44370 b: refs/heads/master c: 195a969 h: refs/heads/master v: v3
1 parent bf60c8c commit 1b9913b

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: f9c15de1fd271032ff44288fa2f0599edd9dd204
2+
refs/heads/master: 195a969bb3e42e82e647e6ffead557f29884ff41
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: a6d9689399d091c3265f00434a69c551a61c28dc
55
refs/heads/try: ef355f6332f83371e4acf04fc4eb940ab41d78d3

trunk/src/libstd/treemap.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -600,29 +600,28 @@ fn split<K: Ord, V>(node: &mut ~TreeNode<K, V>) {
600600

601601
fn insert<K: Ord, V>(node: &mut Option<~TreeNode<K, V>>, key: K,
602602
value: V) -> bool {
603-
if node.is_none() {
604-
*node = Some(~TreeNode::new(key, value));
605-
true
606-
} else {
607-
let mut save = node.swap_unwrap();
603+
match *node {
604+
Some(ref mut save) => {
608605
if key < save.key {
609606
let inserted = insert(&mut save.left, key, value);
610-
skew(&mut save);
611-
split(&mut save);
612-
*node = Some(save); // re-balance, if necessary
607+
skew(save);
608+
split(save);
613609
inserted
614610
} else if save.key < key {
615611
let inserted = insert(&mut save.right, key, value);
616-
skew(&mut save);
617-
split(&mut save);
618-
*node = Some(save); // re-balance, if necessary
612+
skew(save);
613+
split(save);
619614
inserted
620615
} else {
621616
save.key = key;
622617
save.value = value;
623-
*node = Some(save);
624618
false
625619
}
620+
}
621+
None => {
622+
*node = Some(~TreeNode::new(key, value));
623+
true
624+
}
626625
}
627626
}
628627

0 commit comments

Comments
 (0)