This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::collections::HashSet; | |
use std::hash::Hash; | |
pub struct Dag<'a, L: 'a, N: 'a> { | |
leaves: HashSet<L>, | |
// Might be better as an arena but that isn't available the playpen | |
nodes: Vec<Node<'a, L, N>> | |
} | |
impl<'a, L: 'a + Eq + Hash, N: 'a> Dag<'a, L, N> { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
use std::collections::HashSet; | |
use std::hash::Hash; | |
use typed_arena::Arena; | |
#[derive(Clone)] | |
pub enum Edges<'a, L: 'a, N: 'a + Hash> { | |
Leaves(Vec<&'a L>), | |
Children(Vec<&'a Node<'a, L, N>>) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[bbatha@dev threadpool-rs]% cargo test | |
Compiling threadpool v0.0.1 (file:///home/bbatha/projects/threadpool-rs) | |
src/lib.rs:42:12: 42:16 error: `pool` does not live long enough | |
src/lib.rs:42 pool.execute(move || { | |
^~~~ | |
src/lib.rs:38:19: 47:6 note: reference must be valid for the block at 38:18... | |
src/lib.rs:38 fn it_works() { | |
src/lib.rs:39 let mut pool = ScopedThreadPool::new(2); | |
src/lib.rs:40 | |
src/lib.rs:41 for _ in (0..3) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn it_works() { | |
let guards: Vec<thread::JoinGuard<()>> = Vec::with_capacity(3); | |
{ | |
let mut pool = ScopedThreadPool::new(2); | |
for _ in (0..3) { | |
guards.push(pool.execute(move || { | |
thread::sleep_ms(1000); | |
println!("Things are happening!"); | |
})); |
NewerOlder