diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2012-12-10 15:46:41 -0500 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-12-16 19:27:05 -0800 |
| commit | 285496bd550817094c31167e7e49378a35560842 (patch) | |
| tree | 1368d9211ba38431cb37cf7d8b7400c1ded081af /src/libstd/priority_queue.rs | |
| parent | 757a2afb6b80cb4dbdcb8069f1af511ec42e8670 (diff) | |
| download | rust-285496bd550817094c31167e7e49378a35560842.tar.gz rust-285496bd550817094c31167e7e49378a35560842.zip | |
priority_queue: make from_vec a static method
Diffstat (limited to 'src/libstd/priority_queue.rs')
| -rw-r--r-- | src/libstd/priority_queue.rs | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/libstd/priority_queue.rs b/src/libstd/priority_queue.rs index 31d6e04ae62..b92f5f57a5f 100644 --- a/src/libstd/priority_queue.rs +++ b/src/libstd/priority_queue.rs @@ -91,6 +91,16 @@ impl <T: Copy Ord> PriorityQueue<T> { q.to_vec() } + static pub pure fn from_vec(xs: ~[T]) -> PriorityQueue<T> { + let mut q = PriorityQueue{data: xs,}; + let mut n = q.len() / 2; + while n > 0 { + n -= 1; + unsafe { q.siftup(n) }; // purity-checking workaround + } + q + } + priv fn siftdown(&mut self, startpos: uint, pos: uint) { let mut pos = pos; let newitem = self.data[pos]; @@ -133,20 +143,11 @@ impl <T: Copy Ord> PriorityQueue<T> { } } -pub pure fn from_vec<T: Copy Ord>(xs: ~[T]) -> PriorityQueue<T> { - let mut q = PriorityQueue{data: xs,}; - let mut n = q.len() / 2; - while n > 0 { - n -= 1; - unsafe { q.siftup(n) }; // purity-checking workaround - } - q -} - #[cfg(test)] mod tests { use sort::merge_sort; use core::cmp::le; + use PriorityQueue::from_vec; #[test] fn test_top_and_pop() { |
