funlog 0.2.1

A procedural macro for tracing Rust function calls
Documentation
# Contributing to Funlog

Thank you for your interest in contributing to Funlog! This document provides guidelines and information for contributors.

## Code of Conduct

This project adheres to a code of conduct. By participating, you are expected to uphold this code.

## How to Contribute

### Reporting Bugs

Before creating bug reports, please check the existing issues to avoid duplicates. When creating a bug report, please include:

- A clear and descriptive title
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Code examples
- Environment information (OS, Rust version, funlog version)

### Suggesting Features

Feature requests are welcome! Please provide:

- A clear and descriptive title
- Detailed description of the proposed feature
- Use cases and examples
- Any alternatives you've considered

### Pull Requests

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Add tests for your changes
5. Ensure all tests pass (`cargo test`)
6. Run formatting (`cargo fmt`)
7. Run clippy (`cargo clippy`)
8. Commit your changes (`git commit -m 'Add amazing feature'`)
9. Push to the branch (`git push origin feature/amazing-feature`)
10. Open a Pull Request

## Development Setup

### Prerequisites

- Rust (latest stable version)
- Git

### Setup

```bash
git clone https://github.com/koory1st/funlog.git
cd funlog
cargo build
cargo test
```

### Running Tests

```bash
# Run unit tests
cargo test

# Run all examples
./run_tests.sh

# Run specific example
cargo run --example raw_debug
```

### Code Style

- Use `cargo fmt` to format code
- Use `cargo clippy` to check for common mistakes
- Follow Rust naming conventions
- Add documentation for public APIs
- Write tests for new functionality

## Project Structure

```
funlog/
├── src/                    # Source code
│   ├── lib.rs             # Main library entry point
│   ├── config.rs          # Configuration structures
│   ├── config_builder.rs  # Configuration builder
│   ├── generics_item_fn.rs # Function analysis
│   └── output.rs          # Code generation
├── examples/              # Usage examples
├── tests/                 # Integration tests
├── .github/               # GitHub workflows and templates
└── docs/                  # Documentation
```

## Testing Guidelines

- Write unit tests for new functions
- Add integration tests for new features
- Include examples demonstrating new functionality
- Ensure all tests pass before submitting PR

## Documentation

- Update README.md for user-facing changes
- Add inline documentation for new public APIs
- Include examples in documentation
- Update CHANGELOG.md for releases

## Release Process

Releases are automated through GitHub Actions:

1. Update version in `Cargo.toml`
2. Update `CHANGELOG.md`
3. Create a git tag: `git tag v0.1.1`
4. Push tag: `git push origin v0.1.1`
5. GitHub Actions will automatically:
   - Run tests
   - Create GitHub release
   - Publish to crates.io

## Questions?

If you have questions about contributing, please:

1. Check existing issues and discussions
2. Create a new issue with the "question" label
3. Contact the maintainers

Thank you for contributing to Funlog!