@@ -255,10 +255,9 @@ might look like the example below.
255255
256256~~~
257257# use std::task::spawn;
258- # use std::slice;
259258
260259// Create a vector of ports, one for each child task
261- let rxs = slice ::from_fn(3, |init_val| {
260+ let rxs = Vec ::from_fn(3, |init_val| {
262261 let (tx, rx) = channel();
263262 spawn(proc() {
264263 tx.send(some_expensive_computation(init_val));
@@ -304,7 +303,6 @@ be distributed on the available cores.
304303
305304~~~
306305# extern crate sync;
307- # use std::slice;
308306fn partial_sum(start: uint) -> f64 {
309307 let mut local_sum = 0f64;
310308 for num in range(start*100000, (start+1)*100000) {
@@ -314,7 +312,7 @@ fn partial_sum(start: uint) -> f64 {
314312}
315313
316314fn main() {
317- let mut futures = slice ::from_fn(1000, |ind| sync::Future::spawn( proc() { partial_sum(ind) }));
315+ let mut futures = Vec ::from_fn(1000, |ind| sync::Future::spawn( proc() { partial_sum(ind) }));
318316
319317 let mut final_res = 0f64;
320318 for ft in futures.mut_iter() {
@@ -342,25 +340,24 @@ a single large vector of floats. Each task needs the full vector to perform its
342340extern crate rand;
343341extern crate sync;
344342
345- use std::slice;
346343use sync::Arc;
347344
348- fn pnorm(nums: &~ [f64], p: uint) -> f64 {
345+ fn pnorm(nums: &[f64], p: uint) -> f64 {
349346 nums.iter().fold(0.0, |a,b| a+(*b).powf(&(p as f64)) ).powf(&(1.0 / (p as f64)))
350347}
351348
352349fn main() {
353- let numbers = slice ::from_fn(1000000, |_| rand::random::<f64>());
350+ let numbers = Vec ::from_fn(1000000, |_| rand::random::<f64>());
354351 let numbers_arc = Arc::new(numbers);
355352
356353 for num in range(1u, 10) {
357354 let (tx, rx) = channel();
358355 tx.send(numbers_arc.clone());
359356
360357 spawn(proc() {
361- let local_arc : Arc<~[ f64] > = rx.recv();
358+ let local_arc : Arc<Vec< f64> > = rx.recv();
362359 let task_numbers = &*local_arc;
363- println!("{}-norm = {}", num, pnorm(task_numbers, num));
360+ println!("{}-norm = {}", num, pnorm(task_numbers.as_slice() , num));
364361 });
365362 }
366363}
@@ -374,9 +371,8 @@ created by the line
374371# extern crate sync;
375372# extern crate rand;
376373# use sync::Arc;
377- # use std::slice;
378374# fn main() {
379- # let numbers = slice ::from_fn(1000000, |_| rand::random::<f64>());
375+ # let numbers = Vec ::from_fn(1000000, |_| rand::random::<f64>());
380376let numbers_arc=Arc::new(numbers);
381377# }
382378~~~
@@ -387,9 +383,8 @@ and a clone of it is sent to each task
387383# extern crate sync;
388384# extern crate rand;
389385# use sync::Arc;
390- # use std::slice;
391386# fn main() {
392- # let numbers=slice ::from_fn(1000000, |_| rand::random::<f64>());
387+ # let numbers=Vec ::from_fn(1000000, |_| rand::random::<f64>());
393388# let numbers_arc = Arc::new(numbers);
394389# let (tx, rx) = channel();
395390tx.send(numbers_arc.clone());
@@ -404,13 +399,12 @@ Each task recovers the underlying data by
404399# extern crate sync;
405400# extern crate rand;
406401# use sync::Arc;
407- # use std::slice;
408402# fn main() {
409- # let numbers=slice ::from_fn(1000000, |_| rand::random::<f64>());
403+ # let numbers=Vec ::from_fn(1000000, |_| rand::random::<f64>());
410404# let numbers_arc=Arc::new(numbers);
411405# let (tx, rx) = channel();
412406# tx.send(numbers_arc.clone());
413- # let local_arc : Arc<~[ f64] > = rx.recv();
407+ # let local_arc : Arc<Vec< f64> > = rx.recv();
414408let task_numbers = &*local_arc;
415409# }
416410~~~
0 commit comments