From 186bf476aeab0ff0838d1ae26a9dbcb2e40a8eb5 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 28 Aug 2023 15:02:14 +0200 Subject: what i invented here already existed: semaphore --- src/limiter.rs | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 src/limiter.rs (limited to 'src/limiter.rs') diff --git a/src/limiter.rs b/src/limiter.rs deleted file mode 100644 index 97bdb5c..0000000 --- a/src/limiter.rs +++ /dev/null @@ -1,37 +0,0 @@ -use std::sync::{atomic::AtomicUsize, Arc}; - -pub struct Limiter { - limit: usize, - counter: Arc, -} - -impl Limiter { - pub fn new(limit: usize) -> Self { - Limiter { - counter: Default::default(), - limit, - } - } - pub fn obtain(&self) -> Option { - let c = self - .counter - .fetch_add(1, std::sync::atomic::Ordering::Relaxed); - if c < self.limit { - Some(LimitLock { - counter: self.counter.clone(), - }) - } else { - None - } - } -} - -pub struct LimitLock { - counter: Arc, -} -impl Drop for LimitLock { - fn drop(&mut self) { - self.counter - .fetch_sub(1, std::sync::atomic::Ordering::Relaxed); - } -} -- cgit v1.2.3-70-g09d2