scsys_xtask/pipes/watch/builder/
impl_builder.rs

1/*
2    Appellation: impl_builder <module>
3    Contrib: @FL03
4*/
5use super::{Builder, BuilderInner};
6use crate::pipes::watch::{WatcherConfig, WatcherState};
7use std::sync::Arc;
8
9impl Builder {
10    /// Creates a new `Builder` instance with the given configuration and state.
11    ///
12    /// # Arguments
13    ///
14    /// * `config` - A `WatcherConfig` instance containing the configuration for the builder.
15    /// * `state` - A `WatcherState` instance representing the current state of the builder.
16    ///
17    /// # Returns
18    ///
19    /// A new `Builder` instance.
20    pub fn new(config: WatcherConfig, state: WatcherState) -> Self {
21        Self {
22            inner: Arc::new(BuilderInner::new(config, state)),
23        }
24    }
25}
26
27impl Clone for Builder {
28    fn clone(&self) -> Self {
29        Self {
30            inner: Arc::clone(&self.inner),
31        }
32    }
33}
34
35impl AsRef<Arc<BuilderInner>> for Builder {
36    fn as_ref(&self) -> &Arc<BuilderInner> {
37        &self.inner
38    }
39}
40
41impl AsMut<Arc<BuilderInner>> for Builder {
42    fn as_mut(&mut self) -> &mut Arc<BuilderInner> {
43        &mut self.inner
44    }
45}
46
47impl core::ops::Deref for Builder {
48    type Target = BuilderInner;
49
50    fn deref(&self) -> &Self::Target {
51        &self.inner
52    }
53}
54
55impl core::ops::DerefMut for Builder {
56    fn deref_mut(&mut self) -> &mut Self::Target {
57        Arc::make_mut(&mut self.inner)
58    }
59}