flexible-locks_derive 0.1.0

Custom Derive for Flexible Locks
Documentation

Custom Derive for Flexible Locks

This crate provides custom derives for traits describing types that can be wrapped in Flexible Locks types.

For now, Flexible Locks only provides a Mutex type, so this crate provides a #[derive(MutexProtected)].

The #[mutex] attribute is used to indicate the data field containing the raw mutex type.

Examples

extern crate flexible_locks;
#[macro_use]
extern crate flexible_locks_derive;
use flexible_locks::{Mutex, RawMutex};

// Pick your choice of raw mutex;
#[cfg(windows)]
use flexible_locks::CRITICAL_SECTION as RawOsMutex;
#[cfg(unix)]
use flexible_locks::pthread_mutex_t as RawOsMutex;

#[derive(MutexProtected)]
struct Data {
    a: usize,
    #[mutex]
    mutex: RawOsMutex,
    b: usize,
}