use std::collections::HashSet;
use std::sync::Mutex;
use once_cell::sync::Lazy;
static SEEN: Lazy<Mutex<HashSet<String>>> = Lazy::new(|| Mutex::new(HashSet::new()));
pub fn warn_once(message: &str) -> bool {
let mut seen = SEEN.lock().expect("deprecation set poisoned");
if !seen.insert(message.to_string()) {
return false;
}
eprintln!("warning: {message}");
true
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn warn_once_emits_then_suppresses() {
assert!(warn_once("task1-test-msg-a"));
assert!(!warn_once("task1-test-msg-a"));
assert!(warn_once("task1-test-msg-b"));
}
}