use std::sync::Arc;
use super::ProglessInner;
#[expect(unused_imports, reason = "For docs.")]
use super::Progless;
#[derive(Debug)]
pub struct ProglessTaskGuard<'a> {
task: String,
inc: bool,
cycle: u8,
progress: &'a Arc<ProglessInner>,
}
impl Drop for ProglessTaskGuard<'_> {
#[inline]
fn drop(&mut self) {
self.progress.remove_guard(self.task.as_str(), self.cycle, self.inc);
}
}
impl<'a> ProglessTaskGuard<'a> {
pub(super) const fn from_parts(
task: String,
cycle: u8,
progress: &'a Arc<ProglessInner>,
) -> Self {
Self { task, inc: true, cycle, progress }
}
#[inline]
pub fn cancel(mut self) {
self.inc = false;
drop(self);
}
}