Signal

Struct Signal 

Source
pub struct Signal {
    pub received_at: DateTime<Utc>,
    pub app_id: String,
    pub client_user: String,
    pub session_id: String,
    pub signal_type: String,
    pub payload: Vec<String>,
    pub is_test_mode: String,
    pub float_value: Option<f64>,
}
Expand description

An instance of an outgoing telemetry signal

This struct represents a single telemetry event that will be sent to TelemetryDeck. Signals are automatically created by TelemetryDeck::send and TelemetryDeck::send_sync methods - you typically don’t need to construct these manually.

§Serialization

This struct serializes to JSON in camelCase format as expected by the TelemetryDeck API:

{
  "receivedAt": "2025-01-15T10:30:00Z",
  "appID": "xxx-xxx-xxx",
  "clientUser": "hashed-user-id",
  "sessionID": "session-uuid",
  "type": "signalType",
  "payload": ["key1:value1", "key2:value2"],
  "isTestMode": "false",
  "floatValue": 42.5
}

§Privacy

  • client_user is always SHA-256 hashed before being set
  • session_id is a UUID v4 generated per client instance
  • is_test_mode is serialized as a string (“true” or “false”)
  • float_value is omitted from JSON when None

Fields§

§received_at: DateTime<Utc>

Timestamp when this signal was generated (UTC)

§app_id: String

The TelemetryDeck App ID this signal belongs to

§client_user: String

SHA-256 hashed user identifier

This value is automatically hashed by the client before transmission. The server will hash it again with its own salt for privacy.

§session_id: String

Session identifier (UUID v4)

Persists for the lifetime of a TelemetryDeck instance. Can be reset using TelemetryDeck::reset_session.

§signal_type: String

The type/name of this signal (e.g., “userLogin”, “buttonClick”)

§payload: Vec<String>

Custom parameters encoded as “key:value” strings

Created from the HashMap passed to send() or send_sync(). Keys containing colons are sanitized (:_).

§is_test_mode: String

Whether this is a test signal (serialized as string “true” or “false”)

Test signals are shown separately in the TelemetryDeck UI.

§float_value: Option<f64>

Optional floating-point value associated with this signal

Useful for tracking numeric metrics like revenue, duration, score, etc. Omitted from JSON when None.

Trait Implementations§

Source§

impl Debug for Signal

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Signal

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Signal

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Signal

§

impl RefUnwindSafe for Signal

§

impl Send for Signal

§

impl Sync for Signal

§

impl Unpin for Signal

§

impl UnwindSafe for Signal

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,