pub struct Supervisor { /* private fields */ }Expand description
服务生命周期 Supervisor:注册一批服务,按依赖 DAG 编排 prepare→run→cleanup。
Implementations§
Source§impl Supervisor
impl Supervisor
Sourcepub fn new() -> Supervisor
pub fn new() -> Supervisor
空 supervisor(自带一个空 ServiceBus)。
Sourcepub fn add(self, service: Arc<dyn Service>) -> Supervisor
pub fn add(self, service: Arc<dyn Service>) -> Supervisor
注册一个(必选)服务。其 prepare/run 失败会触发整体回滚/收束。
名为 add 是既定的 builder API(非 std::ops::Add)。
Sourcepub fn add_optional(self, service: Arc<dyn Service>) -> Supervisor
pub fn add_optional(self, service: Arc<dyn Service>) -> Supervisor
注册一个可选服务:它的 prepare/run 失败只记日志,不回滚其他服务、不
触发整体收束。用于附加能力型服务(如 web 后台)。
约定:可选服务应是依赖图的叶子(不被其他服务 deps() 引用);依赖一个被跳过的
可选服务属配置错误。
Sourcepub fn bus(&self) -> ServiceBus
pub fn bus(&self) -> ServiceBus
共享 ServiceBus 的克隆(廉价)。供外部预置句柄或事后查询。
Sourcepub async fn run(self, shutdown: CancellationToken) -> Result<(), Error>
pub async fn run(self, shutdown: CancellationToken) -> Result<(), Error>
编排整套生命周期。shutdown 是宿主的关停信号——supervisor 只监听、从不取消它
(收束时取消的是自己派生的子树 token),服务全部自然结束不影响宿主。
- 按依赖拓扑序逐层
prepare(任一失败 → 对已就绪者逆序 cleanup 后返回 Err); - 全部
runspawn 进JoinSet,各持子树的子 token; await 至 shutdown 触发或某run返回 Err; - 取消子树,按逆拓扑序
cleanup。
返回:若某 run 提前以 Err 收束则透传该错误,否则 Ok(())。
Trait Implementations§
Source§impl Default for Supervisor
impl Default for Supervisor
Source§fn default() -> Supervisor
fn default() -> Supervisor
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for Supervisor
impl !UnwindSafe for Supervisor
impl Freeze for Supervisor
impl Send for Supervisor
impl Sync for Supervisor
impl Unpin for Supervisor
impl UnsafeUnpin for Supervisor
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