pub enum TimeEventCallback {
Python(Py<PyAny>),
Rust(Arc<dyn Fn(TimeEvent) + Send + Sync>),
RustLocal(Rc<dyn Fn(TimeEvent)>),
}Expand description
Callback type for time events.
§Variants
Python: For Python callbacks (requirespythonfeature).Rust: Thread-safe callbacks usingArc. Use when the closure isSend + Sync.RustLocal: Single-threaded callbacks usingRc. Use when capturingRc<RefCell<...>>.
§Choosing Between Rust and RustLocal
Use Rust (thread-safe) when:
- The callback doesn’t capture
Rc<RefCell<...>>or other non-Sendtypes. - The closure is
Send + Sync(most simple closures qualify).
Use RustLocal when:
- The callback captures
Rc<RefCell<...>>for shared mutable state. - Thread safety constraints prevent using
Arc.
Both variants work with TestClock and LiveClock. The RustLocal variant is safe
with LiveClock because callbacks are sent through a channel and executed on the
originating thread’s event loop - they never actually cross thread boundaries.
§Automatic Conversion
- Closures that are
Fn + Send + Sync + 'staticautomatically convert toRust. Rc<dyn Fn(TimeEvent)>converts toRustLocal.Arc<dyn Fn(TimeEvent) + Send + Sync>converts toRust.
Variants§
Python(Py<PyAny>)
Python callable for use from Python via PyO3.
Rust(Arc<dyn Fn(TimeEvent) + Send + Sync>)
Thread-safe Rust callback using Arc (Send + Sync).
RustLocal(Rc<dyn Fn(TimeEvent)>)
Local Rust callback using Rc (not Send/Sync).
Implementations§
Trait Implementations§
Source§impl Clone for TimeEventCallback
impl Clone for TimeEventCallback
Source§impl Debug for TimeEventCallback
impl Debug for TimeEventCallback
Source§impl<F> From<F> for TimeEventCallback
impl<F> From<F> for TimeEventCallback
Source§impl From<Py<PyAny>> for TimeEventCallback
Available on crate feature python only.
impl From<Py<PyAny>> for TimeEventCallback
Available on crate feature
python only.impl Send for TimeEventCallback
impl Sync for TimeEventCallback
Auto Trait Implementations§
impl Freeze for TimeEventCallback
impl !RefUnwindSafe for TimeEventCallback
impl Unpin for TimeEventCallback
impl !UnwindSafe for TimeEventCallback
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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