## 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 ```rust 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, } ```