#[derive(Debug, Clone, Copy)]
pub struct RLogicConfig {
pub enable_tracking: bool,
pub safe_nan_handling: bool,
pub recursion_limit: usize,
pub timezone_offset: Option<i32>,
}
impl RLogicConfig {
pub fn new() -> Self {
Self::default()
}
pub fn performance() -> Self {
Self {
enable_tracking: false,
safe_nan_handling: false,
recursion_limit: 1000,
timezone_offset: None,
}
}
pub fn safe() -> Self {
Self {
enable_tracking: true,
safe_nan_handling: true,
recursion_limit: 1000,
timezone_offset: None,
}
}
pub fn minimal() -> Self {
Self {
enable_tracking: false,
safe_nan_handling: false,
recursion_limit: 1000,
timezone_offset: None,
}
}
pub fn with_tracking(mut self, enable: bool) -> Self {
self.enable_tracking = enable;
self
}
pub fn with_safe_nan(mut self, enable: bool) -> Self {
self.safe_nan_handling = enable;
self
}
pub fn with_recursion_limit(mut self, limit: usize) -> Self {
self.recursion_limit = limit;
self
}
pub fn with_timezone_offset(mut self, offset: i32) -> Self {
self.timezone_offset = Some(offset);
self
}
}
impl Default for RLogicConfig {
fn default() -> Self {
Self {
enable_tracking: true,
safe_nan_handling: false,
recursion_limit: 1000,
timezone_offset: None,
}
}
}