# `bitcoin-derive`

`bitcoin-derive` is a Rust procedural macro library designed to enhance concurrency and object interaction patterns for projects related to Bitcoin. Utilizing Rust's powerful procedural macros, this crate provides a series of attributes that facilitate compile-time guarantees and annotations for various concurrency and object modeling constructs.

## Features

- **Concurrency Control**: Decorate functions and methods with macros like `LOCKABLE`, `EXCLUSIVE_LOCK_FUNCTION`, `SCOPED_LOCKABLE`, and `LOCKS_EXCLUDED` to constraint and manage locking behavior.
- **Signal-Slot Mechanism**: Implement Qt-inspired signal and slot patterns using `Q_SIGNAL`, `Q_SIGALS`, `Q_SLOT`, and `Q_SLOTS` attributes, enhancing modular event-driven designs.
- **Fuzz Testing**: Annotate test functions with `fuzz` and `fuzz_test` for integration with fuzz testing tools.
- **Annotation Attributes**: Utilize `no_copy`, `no_move`, and `NO_THREAD_SAFETY_ANALYSIS` to provide explicit specification of intended data handling and thread safety behaviors.

## Getting Started

To integrate `bitcoin-derive` into your Rust project, include it as a dependency in your `Cargo.toml`:

```toml
[dependencies]
bitcoin-derive = "0.1.18"
```

Then, import the macros and use them to annotate your functions and structs:

```rust
use bitcoin_derive::{LOCKABLE, Q_SIGNAL};

#[LOCKABLE]
fn protected_function() {
    // Implementation 
}

#[Q_SIGNAL]
fn emit_signal() {
    // Emit signal logic
}
```

## Documentation

For comprehensive usage and examples, please refer to the [official repository](https://github.com/klebs6/bitcoin-rs) where detailed documentation and example code snippets are available.

## License

This project is licensed under the MIT License.

---

*This README.md file is auto-generated by an AI model. Please verify contents for absolute accuracy.*
