// ANCHOR: here
use std::thread;

pub struct ThreadPool {
    threads: Vec<thread::JoinHandle<()>>,
}

impl ThreadPool {
    // --fragment pominięty--
    // ANCHOR_END: here
    /// Tworzy nową instancję ThreadPool.
    ///
    /// size to liczba watków w puli.
    ///
    /// # Panikuje
    ///
    /// Funkcja `new` wywoła panikę, jeśli size będzie równy 0.
    // ANCHOR: here
    pub fn new(size: usize) -> ThreadPool {
        assert!(size > 0);

        let mut threads = Vec::with_capacity(size);

        for _ in 0..size {
            // Tworzy kilka wątków i zapisuje je w wektorze
        }

        ThreadPool { threads }
    }
    // --fragment pominięty--
    // ANCHOR_END: here

    pub fn execute<F>(&self, f: F)
    where
        F: FnOnce() + Send + 'static,
    {
    }
    // ANCHOR: here
}
// ANCHOR_END: here
