#[non_exhaustive]pub struct SignalsConfig {
pub enabled: bool,
pub auto_capture: bool,
pub diagnostics: bool,
pub session_timeout: DurationStr,
pub retention_days: u32,
pub anonymize_ip: bool,
pub batch_size: usize,
pub flush_interval: DurationStr,
pub channel_capacity: usize,
pub excluded_functions: Vec<String>,
pub bot_detection: bool,
pub geoip_db_path: Option<String>,
}Expand description
Signals configuration for built-in product analytics and frontend diagnostics.
Captures user behavior, acquisition channels, feature usage, and frontend errors without cookies or persistent client-side state (GDPR-compliant).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.enabled: boolEnable the signals pipeline (event ingestion, auto-capture, dashboards).
auto_capture: boolAuto-capture RPC calls as events without user code.
diagnostics: boolCapture frontend errors, failed RPCs, and breadcrumbs for reproduction.
session_timeout: DurationStrInactivity timeout before closing a session (e.g. “30m”).
retention_days: u32Days to retain event data before partition cleanup.
anonymize_ip: boolHash client IP + UA into a daily-rotating visitor ID instead of storing raw IP.
Defaults to true. Disable only when you have a lawful basis for storing
raw IPs (e.g. explicit user consent or a fraud-investigation requirement).
With anonymize_ip = false the raw peer IP is stored in forge_signals_events,
which likely qualifies as personal data under GDPR.
batch_size: usizeMax events per batch INSERT.
flush_interval: DurationStrMax interval between flushes of the event buffer (e.g. “5s”).
channel_capacity: usizeInternal mpsc channel capacity for event buffering.
excluded_functions: Vec<String>Function names to exclude from auto-capture (exact match).
bot_detection: boolTag bot traffic via UA detection (visible in dashboard filter).
geoip_db_path: Option<String>Optional path to a MaxMind MMDB file (e.g. GeoLite2-City.mmdb) for city-level resolution. When omitted, the embedded DB-IP Country Lite database provides country-level resolution with zero configuration.
Trait Implementations§
Source§impl Clone for SignalsConfig
impl Clone for SignalsConfig
Source§fn clone(&self) -> SignalsConfig
fn clone(&self) -> SignalsConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SignalsConfig
impl Debug for SignalsConfig
Source§impl Default for SignalsConfig
impl Default for SignalsConfig
Source§impl<'de> Deserialize<'de> for SignalsConfig
impl<'de> Deserialize<'de> for SignalsConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for SignalsConfig
impl RefUnwindSafe for SignalsConfig
impl Send for SignalsConfig
impl Sync for SignalsConfig
impl Unpin for SignalsConfig
impl UnsafeUnpin for SignalsConfig
impl UnwindSafe for SignalsConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more