s3sync 1.58.6

Reliable, flexible, and fast synchronization tool for S3.
Documentation
use async_channel::Receiver;
use tracing::debug;

#[derive(Debug)]
pub struct Terminator<T> {
    receiver: Receiver<T>,
}

impl<T> Terminator<T> {
    pub fn new(receiver: Receiver<T>) -> Self {
        Self { receiver }
    }

    pub async fn terminate(&self) {
        debug!("terminator has started.");

        while self.receiver.recv().await.is_ok() {}

        debug!("terminator has been completed.");
    }
}