diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-01-23 11:43:58 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2013-01-23 14:41:08 -0800 |
| commit | 54b2cad8b341434c7c0edb153a0fa662fb2981f1 (patch) | |
| tree | 72e8fa6637f1d5250b826ef4436e00993e2d3388 /src/libstd/priority_queue.rs | |
| parent | 1d1b81143b947fa33745a78cf00af12cda437149 (diff) | |
| download | rust-54b2cad8b341434c7c0edb153a0fa662fb2981f1.tar.gz rust-54b2cad8b341434c7c0edb153a0fa662fb2981f1.zip | |
libsyntax: Remove `fn() unsafe { ... }`. r=graydon
Diffstat (limited to 'src/libstd/priority_queue.rs')
| -rw-r--r-- | src/libstd/priority_queue.rs | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/src/libstd/priority_queue.rs b/src/libstd/priority_queue.rs index ee78fafb60b..b5b30599d48 100644 --- a/src/libstd/priority_queue.rs +++ b/src/libstd/priority_queue.rs @@ -131,41 +131,46 @@ impl <T: Ord> PriorityQueue<T> { // vector over the junk element. This reduces the constant factor // compared to using swaps, which involves twice as many moves. - priv fn siftup(&mut self, start: uint, pos: uint) unsafe { - let mut pos = pos; - let new = move *addr_of(&self.data[pos]); - - while pos > start { - let parent = (pos - 1) >> 1; - if new > self.data[parent] { - rusti::move_val_init(&mut self.data[pos], - move *addr_of(&self.data[parent])); - pos = parent; - loop + priv fn siftup(&mut self, start: uint, pos: uint) { + unsafe { + let mut pos = pos; + let new = move *addr_of(&self.data[pos]); + + while pos > start { + let parent = (pos - 1) >> 1; + if new > self.data[parent] { + rusti::move_val_init(&mut self.data[pos], + move *addr_of(&self.data[parent])); + pos = parent; + loop + } + break } - break + rusti::move_val_init(&mut self.data[pos], move new); } - rusti::move_val_init(&mut self.data[pos], move new); } - priv fn siftdown_range(&mut self, pos: uint, end: uint) unsafe { - let mut pos = pos; - let start = pos; - let new = move *addr_of(&self.data[pos]); - - let mut child = 2 * pos + 1; - while child < end { - let right = child + 1; - if right < end && !(self.data[child] > self.data[right]) { - child = right; + priv fn siftdown_range(&mut self, pos: uint, end: uint) { + unsafe { + let mut pos = pos; + let start = pos; + let new = move *addr_of(&self.data[pos]); + + let mut child = 2 * pos + 1; + while child < end { + let right = child + 1; + if right < end && !(self.data[child] > self.data[right]) { + child = right; + } + rusti::move_val_init(&mut self.data[pos], + move *addr_of(&self.data[child])); + pos = child; + child = 2 * pos + 1; } - rusti::move_val_init(&mut self.data[pos], - move *addr_of(&self.data[child])); - pos = child; - child = 2 * pos + 1; + + rusti::move_val_init(&mut self.data[pos], move new); + self.siftup(start, pos); } - rusti::move_val_init(&mut self.data[pos], move new); - self.siftup(start, pos); } priv fn siftdown(&mut self, pos: uint) { |
