Untitled
unknown
plain_text
2 years ago
920 B
2
Indexable
use std::sync::mpsc::{channel, Sender}; use std::thread::JoinHandle; #[derive(Debug)] struct Message { msg: usize } struct Looper { sender: Sender<Message>, threads: Vec<JoinHandle<()>> } impl Looper{ fn new <T: Fn(Message)->(), Q: Fn()->()> (process: T, cleanup: Q) -> Self { let (tx, rx) = channel::<Message>(); let mut threads = Vec::new(); threads.push(std::thread::spawn(move || { while let Ok(msg) = rx.recv(){ process(msg); } cleanup(); })); return Looper{ sender: tx, threads } } pub fn send(&self, msg: Message){ self.sender.send(msg); } } fn main() { let f1 = |mut s: Message| {s.msg = 1; println!("Processata{:?}", s)}; let f2 = || {println!("Cleanup!")}; let str = Looper::new(f1, f2); }
Editor is loading...