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}