scheduled_thread_pool/
builder.rs1use crate::{OnPoolDropBehavior, ScheduledThreadPool};
4
5pub struct NumThreadsStage(pub(crate) ());
7
8impl NumThreadsStage {
9    pub fn num_threads<'a>(self, num_threads: usize) -> FinalStage<'a> {
15        assert!(num_threads > 0, "num_threads must be positive");
16        FinalStage {
17            num_threads,
18            thread_name_pattern: None,
19            on_drop_behavior: OnPoolDropBehavior::CompletePendingScheduled,
20        }
21    }
22}
23
24pub struct FinalStage<'a> {
26    pub(crate) num_threads: usize,
27    pub(crate) thread_name_pattern: Option<&'a str>,
28    pub(crate) on_drop_behavior: OnPoolDropBehavior,
29}
30
31impl<'a> FinalStage<'a> {
32    pub fn thread_name_pattern(mut self, thread_name_pattern: &'a str) -> Self {
40        self.thread_name_pattern = Some(thread_name_pattern);
41        self
42    }
43
44    pub fn on_drop_behavior(mut self, on_drop_behavior: OnPoolDropBehavior) -> Self {
49        self.on_drop_behavior = on_drop_behavior;
50        self
51    }
52
53    pub fn build(self) -> ScheduledThreadPool {
55        ScheduledThreadPool::new_inner(self)
56    }
57}