Múltiples Ganchos
En esta página
Puedes registrar tantos bloques on como quieras — del mismo tipo o de tipos
distintos. El runtime los organiza en pilas separadas por tipo y los dispara
siguiendo dos reglas:
on shutdown— LIFO: el bloque declarado en último lugar se ejecuta primero.on panic— se dispara antes deon shutdowncuando el cierre es causado por un pánico no capturado.
El ejemplo siguiente registra tres ganchos on shutdown y un on panic, luego
ejecuta el programa normalmente (sin pánico). Los tres bloques de shutdown se
ejecutan en orden inverso de declaración — 3, 2, 1:
Tres ganchos on shutdown (LIFO) y un on panic — disparo en la salida
normal. Ejecuta localmente para ver [hook 3], [hook 2] y [hook 1] en ese
orden, más process.uptime() al inicio.
// Lifecycle hooks demo — `on shutdown`, `on signal`, `on panic`.
// Companion: specs/lifecycle-hooks.md
use std::process
// Multiple shutdown blocks compose in LIFO order.
on shutdown {
print("[hook 1] outermost cleanup")
}
on shutdown reason {
print("[hook 2] reason was: {reason}")
}
on shutdown {
print("[hook 3] innermost cleanup")
}
on panic e {
print("[panic] uncaught: {e}")
}
print("uptime at start: {process.uptime()}s")
print("running main work...")
// Trigger normal-exit path; "on shutdown" should fire with reason="normal".
print("done")
Requiere la CLI o el host de Zolo; ábrelo en el playground o ejecútalo localmente.
El orden LIFO refleja la convención de defer: el último en entrar es el
primero en salir, garantizando que los recursos abiertos más recientemente se
cierren antes que los más antiguos.
Consulta también