pub struct Handle<Msg: Send + 'static> { /* private fields */ }Expand description
Asa al runtime de Llimphi. Clonable y enviable entre hilos: la usás para
pedir cerrar la ventana o para lanzar trabajo (PAM, IO, etc.) que al
terminar reentra con un Msg al update.
Tests pueden construir un handle “muerto” con Handle::for_test: los
dispatch/quit/spawn siguen siendo seguros de llamar pero los
Msg que generan no van a ningún lado (no hay event loop detrás).
Implementations§
Source§impl<Msg: Send + 'static> Handle<Msg>
impl<Msg: Send + 'static> Handle<Msg>
Sourcepub fn for_test() -> Self
pub fn for_test() -> Self
Construye un handle desactivado para tests — todos los dispatch
se descartan silenciosamente. Útil para probar funciones que toman
&Handle<Msg> sin levantar un event loop real (que en CI sin
display tiraría).
Sourcepub fn quit(&self)
pub fn quit(&self)
Cierra la ventana y termina el bucle. La transición en curso (si la hay) se completa antes de salir.
Sourcepub fn lift<Sub, F>(&self, lift: F) -> Handle<Sub>
pub fn lift<Sub, F>(&self, lift: F) -> Handle<Sub>
Deriva un handle para un sub-app hospedado: el update/efectos del
sub-app usan su propio Sub msg, y lift los eleva al Msg del host
antes de despacharlos a este loop. Es la pieza que permite embeber un
App entero en otro (junto con crate::View::map para su view) sin
reescribirlo a patrón módulo. El sub-handle es Clone + Send como
cualquier handle. open_window/close_window/quit quedan no-op en él
(esas son del host).
Sourcepub fn open_window(
&self,
key: u64,
title: impl Into<String>,
width: u32,
height: u32,
)
pub fn open_window( &self, key: u64, title: impl Into<String>, width: u32, height: u32, )
Abre una ventana OS secundaria (ver App::secondary_view). La
key la elige la app para reconocerla luego; abrir con una key que ya
existe sólo la enfoca (no duplica). El contenido lo pinta
App::secondary_view(model, key) y los eventos (click/tecla/…) reentran
al mismo update, así que la ventana comparte el modelo con la primaria.
Cerrala con Self::close_window o con el botón del SO.
Sourcepub fn close_window(&self, key: u64)
pub fn close_window(&self, key: u64)
Cierra la ventana secundaria con esa key (no-op si no existe). La
ventana primaria nunca se cierra por acá — para eso está Self::quit.
Sourcepub fn dispatch(&self, msg: Msg)
pub fn dispatch(&self, msg: Msg)
Encola un Msg para procesarse en el próximo turno del bucle. Útil para que un callback externo reentre al update.
Sourcepub fn spawn<F>(&self, f: F)
pub fn spawn<F>(&self, f: F)
Lanza una closure en un hilo aparte; cuando devuelve Msg, el
runtime la entrega al update en el hilo de UI. Pensado para
trabajo bloqueante (PAM tarda ~2 s ante un fallo, p. ej.).
Sourcepub fn spawn_periodic<F>(&self, period: Duration, f: F)
pub fn spawn_periodic<F>(&self, period: Duration, f: F)
Lanza un loop periódico en un hilo aparte: cada period invoca
f() y dispatcha el Msg resultante al update. El thread
queda corriendo hasta que el event loop se cierra (en ese
punto el send_event falla silenciosamente y el thread spinea
hasta el exit del proceso, costo despreciable).
Útil para ticks de simulación (~11 Hz en dominium), polling de
hardware, o cualquier feed que necesite Msgs a intervalos
regulares. Si f necesita state, capturalo en la closure por
move; la closure se ejecuta en un thread aparte así que el
state capturado debe ser Send.
Trait Implementations§
Auto Trait Implementations§
impl<Msg> !RefUnwindSafe for Handle<Msg>
impl<Msg> !UnwindSafe for Handle<Msg>
impl<Msg> Freeze for Handle<Msg>
impl<Msg> Send for Handle<Msg>
impl<Msg> Sync for Handle<Msg>
impl<Msg> Unpin for Handle<Msg>
impl<Msg> UnsafeUnpin for Handle<Msg>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.