recoverable-thread-pool 2.4.19

A thread pool that supports automatic recovery from panics, allowing threads to restart after a panic. Useful for resilient and fault-tolerant concurrency in network and web programming.
Documentation
use crate::*;

/// Worker implementation for handling thread pool jobs.
impl Worker {
    /// Creates a new worker thread.
    ///
    /// # Arguments
    ///
    /// - `usize` - The worker identifier.
    /// - `Arc<Mutex<Receiver<ThreadPoolJob>>>` - The shared job receiver.
    ///
    /// # Returns
    ///
    /// - `Option<Worker>` - The new worker instance.
    pub fn new(id: usize, receiver: Arc<Mutex<Receiver<ThreadPoolJob>>>) -> Option<Worker> {
        spawn(|| {
            let _ = recoverable_spawn(move || {
                loop {
                    if let Ok(receiver_lock) = receiver.lock()
                        && let Ok(job) = receiver_lock.recv()
                    {
                        let _ = recoverable_spawn(job);
                    }
                }
            });
        });
        Some(Worker { id })
    }
}