Skip to main content

TelemetrySession

Struct TelemetrySession 

Source
pub struct TelemetrySession { /* private fields */ }
Expand description

A copyable, inert session handle used by callbacks after initialization.

Calling TelemetrySession::with_call is unsafe because the caller must prove that the current stack is executing as a direct call from SCS on the game’s main thread.

The scoped capability cannot be returned from the higher-ranked closure:

use scs_sdk::{SdkCall, TelemetrySession};

fn leak(session: TelemetrySession) -> &'static SdkCall<'static> {
    unsafe { session.with_call(|call| call) }
}

Implementations§

Source§

impl TelemetrySession

Source

pub unsafe fn with_call<R>( self, operation: impl for<'scope> FnOnce(&SdkCall<'scope>) -> R, ) -> R

Executes an operation with the capabilities valid during a direct SCS callback, initialization call, or shutdown call.

§Safety

The caller must be executing synchronously on the game’s main thread as a direct call from SCS, while the telemetry session is active. The operation must not let the scoped capability escape its closure and must not unwind across the SDK ABI boundary.

Trait Implementations§

Source§

impl Clone for TelemetrySession

Source§

fn clone(&self) -> TelemetrySession

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for TelemetrySession

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.