os-sync 0.3.3

Simple synchronization primitives based on OS semaphore
Documentation
use os_sync::{Sem, Semaphore};

#[test]
fn should_return_when_signaled() {
    let sem = Sem::new(0).unwrap();

    assert!(sem.try_lock().is_none());
    #[cfg(not(any(target_os = "macos", target_os = "ios")))]
    {
        assert!(sem.post());
        assert!(!sem.post());
    }

    #[cfg(any(target_os = "macos", target_os = "ios"))]
    {
        assert!(!sem.post());
        assert!(!sem.post());
    }

    let _guard = sem.lock();
    assert!(sem.try_wait());
    assert!(!sem.try_wait());

    drop(_guard);
    assert!(sem.try_wait());
}