dropslot 0.2.0

A high-performance publish-subscribe library with latest-only delivery semantics
Documentation
# Contributing to DropSlot

Thank you for your interest in contributing to DropSlot! This document provides guidelines for contributing to the project.

## Development Setup

1. **Fork and Clone**
   ```bash
   git clone https://github.com/your-username/dropslot.git
   cd dropslot
   ```

2. **Install Rust**
   Ensure you have Rust installed. We recommend using [rustup]https://rustup.rs/.

3. **Install Dependencies**
   ```bash
   cargo build
   ```

4. **Run Tests**
   ```bash
   cargo test --all-features
   ```

## Code Style

- Follow the official Rust formatting guidelines
- Run `cargo fmt` before submitting
- Run `cargo clippy` to check for lints
- Ensure all tests pass with `cargo test --all-features`

## Pull Request Process

1. **Create a Feature Branch**
   ```bash
   git checkout -b feature/your-feature-name
   ```

2. **Make Changes**
   - Write clear, concise commit messages
   - Include tests for new functionality
   - Update documentation as needed

3. **Test Your Changes**
   ```bash
   cargo test --all-features
   cargo clippy --all-features -- -D warnings
   cargo fmt --all -- --check
   ```

4. **Submit Pull Request**
   - Include a clear description of changes
   - Reference any related issues
   - Ensure CI passes

## Code Guidelines

### Performance
- Use `#[inline]` on small, frequently called functions
- Prefer zero-copy operations where possible
- Consider memory layout and cache efficiency

### Error Handling
- Use `Result<T, BusError>` for fallible operations
- Provide meaningful error messages
- Document error conditions in function docs

### Testing
- Write unit tests for all public functions
- Include integration tests for complex scenarios
- Add doc tests for example code
- Aim for high test coverage

### Documentation
- Include rustdoc comments for all public items
- Provide usage examples in doc comments
- Keep examples simple and focused
- Update README.md for significant changes

## Reporting Issues

When reporting bugs, please include:
- Rust version (`rustc --version`)
- Operating system
- Minimal reproducible example
- Expected vs actual behavior

## Feature Requests

For new features:
- Open an issue first to discuss the proposal
- Consider performance implications
- Ensure it aligns with project goals
- Include use cases and examples

## Code of Conduct

This project follows the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct).

## License

By contributing, you agree that your contributions will be licensed under the same terms as the project (MIT OR Apache-2.0).

## Getting Help

- Check existing issues and documentation
- Ask questions in issues with the "question" label
- Join the discussion in pull requests

Thank you for contributing to DropSlot!