pub struct Lifecycle { /* private fields */ }Expand description
Lifecycle controller for managing background tasks.
Concurrency notes:
- State is tracked with atomics and
Notify. handle/cancelare protected byMutex, and their locking scope is kept minimal.- All public start methods are thin wrappers around
start_core.
Implementations§
Source§impl Lifecycle
impl Lifecycle
pub fn new_named(name: &'static str) -> Self
pub fn new() -> Self
pub fn name(&self) -> &'static str
Sourcepub fn start<F, Fut>(&self, make: F) -> Result<(), LifecycleError>
pub fn start<F, Fut>(&self, make: F) -> Result<(), LifecycleError>
Spawn the job using make(cancel).
The future is constructed inside the task to avoid leaving the lifecycle in Starting
if make panics.
§Errors
Returns LcError if the lifecycle is not in a startable state.
Sourcepub fn start_with_token<F, Fut>(
&self,
token: CancellationToken,
make: F,
) -> Result<(), LifecycleError>
pub fn start_with_token<F, Fut>( &self, token: CancellationToken, make: F, ) -> Result<(), LifecycleError>
Spawn the job using a provided CancellationToken and make(cancel).
§Errors
Returns LcError if the lifecycle is not in a startable state.
Sourcepub fn start_with_ready<F, Fut>(&self, make: F) -> Result<(), LifecycleError>where
F: FnOnce(CancellationToken, ReadySignal) -> Fut + Send + 'static,
Fut: Future<Output = Result<()>> + Send + 'static,
pub fn start_with_ready<F, Fut>(&self, make: F) -> Result<(), LifecycleError>where
F: FnOnce(CancellationToken, ReadySignal) -> Fut + Send + 'static,
Fut: Future<Output = Result<()>> + Send + 'static,
Spawn the job using make(cancel, ready). Status becomes Running only after ready.notify().
§Errors
Returns LcError if the lifecycle is not in a startable state.
Sourcepub fn start_with_ready_and_token<F, Fut>(
&self,
token: CancellationToken,
make: F,
) -> Result<(), LifecycleError>where
F: FnOnce(CancellationToken, ReadySignal) -> Fut + Send + 'static,
Fut: Future<Output = Result<()>> + Send + 'static,
pub fn start_with_ready_and_token<F, Fut>(
&self,
token: CancellationToken,
make: F,
) -> Result<(), LifecycleError>where
F: FnOnce(CancellationToken, ReadySignal) -> Fut + Send + 'static,
Fut: Future<Output = Result<()>> + Send + 'static,
Ready-aware start variant that uses a provided CancellationToken.
§Errors
Returns LcError if the lifecycle is not in a startable state.
Sourcepub async fn stop(
&self,
timeout: Duration,
) -> Result<StopReason, LifecycleError>
pub async fn stop( &self, timeout: Duration, ) -> Result<StopReason, LifecycleError>
Request graceful shutdown and wait up to timeout.
§Errors
Returns LcError if the stop operation fails.
Sourcepub fn is_running(&self) -> bool
pub fn is_running(&self) -> bool
Whether it is in Starting or Running.
Sourcepub fn try_start<F, Fut>(&self, make: F) -> bool
pub fn try_start<F, Fut>(&self, make: F) -> bool
Best-effort “try start” that swallows the error and returns bool.
Sourcepub async fn wait_stopped(&self)
pub async fn wait_stopped(&self)
Wait until the task is fully stopped.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Lifecycle
impl !RefUnwindSafe for Lifecycle
impl Send for Lifecycle
impl Sync for Lifecycle
impl Unpin for Lifecycle
impl UnsafeUnpin for Lifecycle
impl UnwindSafe for Lifecycle
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
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> WithSecurityContext for T
impl<T> WithSecurityContext for T
Source§fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>
fn security_ctx<'a>(&'a self, ctx: &'a SecurityContext) -> Secured<'a, T>
Secured wrapper. Read more