@@ -255,10 +255,9 @@ might look like the example below.
255
255
256
256
~~~
257
257
# use std::task::spawn;
258
- # use std::slice;
259
258
260
259
// 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| {
262
261
let (tx, rx) = channel();
263
262
spawn(proc() {
264
263
tx.send(some_expensive_computation(init_val));
@@ -304,7 +303,6 @@ be distributed on the available cores.
304
303
305
304
~~~
306
305
# extern crate sync;
307
- # use std::slice;
308
306
fn partial_sum(start: uint) -> f64 {
309
307
let mut local_sum = 0f64;
310
308
for num in range(start*100000, (start+1)*100000) {
@@ -314,7 +312,7 @@ fn partial_sum(start: uint) -> f64 {
314
312
}
315
313
316
314
fn 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) }));
318
316
319
317
let mut final_res = 0f64;
320
318
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
342
340
extern crate rand;
343
341
extern crate sync;
344
342
345
- use std::slice;
346
343
use sync::Arc;
347
344
348
- fn pnorm(nums: &~ [f64], p: uint) -> f64 {
345
+ fn pnorm(nums: &[f64], p: uint) -> f64 {
349
346
nums.iter().fold(0.0, |a,b| a+(*b).powf(&(p as f64)) ).powf(&(1.0 / (p as f64)))
350
347
}
351
348
352
349
fn main() {
353
- let numbers = slice ::from_fn(1000000, |_| rand::random::<f64>());
350
+ let numbers = Vec ::from_fn(1000000, |_| rand::random::<f64>());
354
351
let numbers_arc = Arc::new(numbers);
355
352
356
353
for num in range(1u, 10) {
357
354
let (tx, rx) = channel();
358
355
tx.send(numbers_arc.clone());
359
356
360
357
spawn(proc() {
361
- let local_arc : Arc<~[ f64] > = rx.recv();
358
+ let local_arc : Arc<Vec< f64> > = rx.recv();
362
359
let task_numbers = &*local_arc;
363
- println!("{}-norm = {}", num, pnorm(task_numbers, num));
360
+ println!("{}-norm = {}", num, pnorm(task_numbers.as_slice() , num));
364
361
});
365
362
}
366
363
}
@@ -374,9 +371,8 @@ created by the line
374
371
# extern crate sync;
375
372
# extern crate rand;
376
373
# use sync::Arc;
377
- # use std::slice;
378
374
# fn main() {
379
- # let numbers = slice ::from_fn(1000000, |_| rand::random::<f64>());
375
+ # let numbers = Vec ::from_fn(1000000, |_| rand::random::<f64>());
380
376
let numbers_arc=Arc::new(numbers);
381
377
# }
382
378
~~~
@@ -387,9 +383,8 @@ and a clone of it is sent to each task
387
383
# extern crate sync;
388
384
# extern crate rand;
389
385
# use sync::Arc;
390
- # use std::slice;
391
386
# fn main() {
392
- # let numbers=slice ::from_fn(1000000, |_| rand::random::<f64>());
387
+ # let numbers=Vec ::from_fn(1000000, |_| rand::random::<f64>());
393
388
# let numbers_arc = Arc::new(numbers);
394
389
# let (tx, rx) = channel();
395
390
tx.send(numbers_arc.clone());
@@ -404,13 +399,12 @@ Each task recovers the underlying data by
404
399
# extern crate sync;
405
400
# extern crate rand;
406
401
# use sync::Arc;
407
- # use std::slice;
408
402
# fn main() {
409
- # let numbers=slice ::from_fn(1000000, |_| rand::random::<f64>());
403
+ # let numbers=Vec ::from_fn(1000000, |_| rand::random::<f64>());
410
404
# let numbers_arc=Arc::new(numbers);
411
405
# let (tx, rx) = channel();
412
406
# tx.send(numbers_arc.clone());
413
- # let local_arc : Arc<~[ f64] > = rx.recv();
407
+ # let local_arc : Arc<Vec< f64> > = rx.recv();
414
408
let task_numbers = &*local_arc;
415
409
# }
416
410
~~~
0 commit comments