Struct ThreadToken

Source
pub struct ThreadToken<T: 'static>(/* private fields */);
Expand description

Holds a value inside a thread-local storage.

Then, this token can be used to access the underlying value as long you are in the same thread that created it.

This is useful on the web, where you are always in the same thread, but you need to pass some kind of non-Send value across Send boundries of Makepad.

Warning: Trying to read the value from a different thread will panic.

Warning: This token is reference counted so you can have copies of it, but the last copy must be dropped in the same thread that created it to avoid leaks. If this value is dropped in a different thread, it will panic.

Implementations§

Source§

impl<T> ThreadToken<T>

Source

pub fn new(value: T) -> Self

Put the given value in thread-local storage and return a token to access it.

Source

pub fn peek<R>(&self, f: impl FnOnce(&T) -> R) -> R

Immutable access to the value associated with this token.

Source

pub fn peek_mut<R>(&self, f: impl FnOnce(&mut T) -> R) -> R

Mutable access to the value associated with this token.

Source§

impl<T: Clone> ThreadToken<T>

Source

pub fn clone_inner(&self) -> T

Clone the associated value of this token and return it.

Trait Implementations§

Source§

impl<T> Clone for ThreadToken<T>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<T> Debug for ThreadToken<T>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> Freeze for ThreadToken<T>

§

impl<T> RefUnwindSafe for ThreadToken<T>

§

impl<T> Send for ThreadToken<T>

§

impl<T> Sync for ThreadToken<T>

§

impl<T> Unpin for ThreadToken<T>

§

impl<T> UnwindSafe for ThreadToken<T>

Blanket Implementations§

§

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

§

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

§

fn ref_cast_type_id(&self) -> TypeId
where Self: 'static,

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

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

§

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
§

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WidgetActionTrait for T
where T: 'static + Clone + Debug + Send + Sync + ?Sized,

§

fn ref_cast_type_id(&self) -> TypeId

§

fn box_clone(&self) -> Box<dyn WidgetActionTrait>

§

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

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

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

Source§

impl<T> PlatformSend for T

Source§

impl<T> PlatformSendInner for T
where T: Send,