vrl/compiler/
context.rs

1use super::TimeZone;
2
3use super::{Target, state::RuntimeState};
4
5pub struct Context<'a> {
6    target: &'a mut dyn Target,
7    state: &'a mut RuntimeState,
8    timezone: &'a TimeZone,
9}
10
11impl<'a> Context<'a> {
12    /// Create a new [`Context`].
13    pub fn new(
14        target: &'a mut dyn Target,
15        state: &'a mut RuntimeState,
16        timezone: &'a TimeZone,
17    ) -> Self {
18        Self {
19            target,
20            state,
21            timezone,
22        }
23    }
24
25    /// Get a reference to the [`Target`].
26    #[must_use]
27    pub fn target(&self) -> &dyn Target {
28        self.target
29    }
30
31    /// Get a mutable reference to the [`Target`].
32    pub fn target_mut(&mut self) -> &mut dyn Target {
33        self.target
34    }
35
36    /// Get a reference to the [`runtime state`](RuntimeState).
37    #[must_use]
38    pub fn state(&self) -> &RuntimeState {
39        self.state
40    }
41
42    /// Get a mutable reference to the [`runtime state`](RuntimeState).
43    pub fn state_mut(&mut self) -> &mut RuntimeState {
44        self.state
45    }
46
47    /// Get a reference to the [`TimeZone`]
48    #[must_use]
49    pub fn timezone(&self) -> &TimeZone {
50        self.timezone
51    }
52}