Crate closures [] [src]

extern crate closures;

use std::thread;
use std::sync::mpsc;
use closures::Closure;

struct State {
    id: i32,
    messages: Vec<&'static str>,
    tx: mpsc::Sender<(i32, &'static str)>,
}

fn main() {
    let (tx, rx) = mpsc::channel();
     
    let state = State {
        id: 0,
        messages: vec!["hello", "rusty", "world"],
        tx: tx.clone(),
    };
    thread::spawn(Closure::new(state, thread));
     
    let state = State {
        id: 1,
        messages: vec!["veni", "vidi", "vici"],
        tx: tx,
    };
    thread::spawn(Closure::new(state, thread));
     
    for (id, msg) in rx {
        println!("Thread {} sent: {}", id, msg);
    }
}

fn thread(this: &State) {
    for msg in &this.messages {
        this.tx.send((this.id, msg)).unwrap();
    }
}

Structs

Closure
Closure1
Closure2
Closure3
Closure4
Closure5
Closure6
Closure7
Closure8
Closure9
Closure10
ClosureMut
ClosureMut1
ClosureMut2
ClosureMut3
ClosureMut4
ClosureMut5
ClosureMut6
ClosureMut7
ClosureMut8
ClosureMut9
ClosureMut10
ClosureOnce
ClosureOnce1
ClosureOnce2
ClosureOnce3
ClosureOnce4
ClosureOnce5
ClosureOnce6
ClosureOnce7
ClosureOnce8
ClosureOnce9
ClosureOnce10
RecClosure
RecClosure1
RecClosure2
RecClosure3
RecClosure4
RecClosure5
RecClosure6
RecClosure7
RecClosure8
RecClosure9
RecClosure10
RecClosureMut
RecClosureMut1
RecClosureMut2
RecClosureMut3
RecClosureMut4
RecClosureMut5
RecClosureMut6
RecClosureMut7
RecClosureMut8
RecClosureMut9
RecClosureMut10
RecClosureOnce
RecClosureOnce1
RecClosureOnce2
RecClosureOnce3
RecClosureOnce4
RecClosureOnce5
RecClosureOnce6
RecClosureOnce7
RecClosureOnce8
RecClosureOnce9
RecClosureOnce10