diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2013-08-29 21:49:55 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2013-08-29 22:55:59 +1000 |
| commit | 440f1e2dadaf7c56575b65aa13c30abf9d5cec26 (patch) | |
| tree | ca7c7d2fd1091ac75263b98d19e47863e169c8ee /src/libstd | |
| parent | 54e7bdc48e97d369acd51d1c08988fd946ccafd2 (diff) | |
| download | rust-440f1e2dadaf7c56575b65aa13c30abf9d5cec26.tar.gz rust-440f1e2dadaf7c56575b65aa13c30abf9d5cec26.zip | |
rt: use sugary functions rather than manual range loops.
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/rt/args.rs | 9 | ||||
| -rw-r--r-- | src/libstd/rt/mod.rs | 18 |
2 files changed, 11 insertions, 16 deletions
diff --git a/src/libstd/rt/args.rs b/src/libstd/rt/args.rs index baaf3d44e79..e5075f8818a 100644 --- a/src/libstd/rt/args.rs +++ b/src/libstd/rt/args.rs @@ -55,10 +55,11 @@ pub fn clone() -> Option<~[~str]> { mod imp { use libc; use option::{Option, Some, None}; - use iterator::{Iterator, range}; + use iterator::Iterator; use str; use unstable::finally::Finally; use util; + use vec; pub unsafe fn init(argc: int, argv: **u8) { let args = load_argc_and_argv(argc, argv); @@ -111,11 +112,9 @@ mod imp { // Copied from `os`. unsafe fn load_argc_and_argv(argc: int, argv: **u8) -> ~[~str] { - let mut args = ~[]; - for i in range(0u, argc as uint) { - args.push(str::raw::from_c_str(*(argv as **libc::c_char).offset(i as int))); + do vec::from_fn(argc as uint) |i| { + str::raw::from_c_str(*(argv as **libc::c_char).offset(i as int)) } - args } #[cfg(stage0)] diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs index 7728a388c65..14ff1fd5804 100644 --- a/src/libstd/rt/mod.rs +++ b/src/libstd/rt/mod.rs @@ -59,7 +59,7 @@ Several modules in `core` are clients of `rt`: use cell::Cell; use clone::Clone; use container::Container; -use iterator::{Iterator, range}; +use iterator::Iterator; use option::{Option, None, Some}; use ptr::RawPtr; use rt::local::Local; @@ -71,7 +71,8 @@ use rt::work_queue::WorkQueue; use rt::uv::uvio::UvEventLoop; use unstable::atomics::{AtomicInt, SeqCst}; use unstable::sync::UnsafeArc; -use vec::{OwnedVector, MutableVector}; +use vec; +use vec::{OwnedVector, MutableVector, ImmutableVector}; /// The global (exchange) heap. pub mod global_heap; @@ -251,11 +252,7 @@ fn run_(main: ~fn(), use_main_sched: bool) -> int { // Create a work queue for each scheduler, ntimes. Create an extra // for the main thread if that flag is set. We won't steal from it. - let mut work_queues = ~[]; - for _ in range(0u, nscheds) { - let work_queue: WorkQueue<~Task> = WorkQueue::new(); - work_queues.push(work_queue); - } + let work_queues: ~[WorkQueue<~Task>] = vec::from_fn(nscheds, |_| WorkQueue::new()); // The schedulers. let mut scheds = ~[]; @@ -263,13 +260,13 @@ fn run_(main: ~fn(), use_main_sched: bool) -> int { // sent the Shutdown message to terminate the schedulers. let mut handles = ~[]; - for i in range(0u, nscheds) { + for work_queue in work_queues.iter() { rtdebug!("inserting a regular scheduler"); // Every scheduler is driven by an I/O event loop. let loop_ = ~UvEventLoop::new(); let mut sched = ~Scheduler::new(loop_, - work_queues[i].clone(), + work_queue.clone(), work_queues.clone(), sleepers.clone()); let handle = sched.make_handle(); @@ -358,9 +355,8 @@ fn run_(main: ~fn(), use_main_sched: bool) -> int { } // Run each remaining scheduler in a thread. - while !scheds.is_empty() { + for sched in scheds.move_rev_iter() { rtdebug!("creating regular schedulers"); - let sched = scheds.pop(); let sched_cell = Cell::new(sched); let thread = do Thread::start { let mut sched = sched_cell.take(); |
