# Contributing
Thank you for your interest in contributing to this project! This project was developed as part of the Pragmatic AI Labs Rust Bootcamp, and we welcome contributions from fellow learners and Rust enthusiasts.
## Development Environment
This project was built using the development practices and tools taught in the [Rust Bootcamp](https://github.com/paiml/ds500-rust-bootcamp). We recommend using:
- **Rust**: Latest stable version
- **Editor**: VS Code with rust-analyzer extension
- **Development**: GitHub Codespaces or local dev containers
- **Formatting**: `cargo fmt`
- **Linting**: `cargo clippy`
## Getting Started
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/your-feature-name`
3. Make your changes
4. Run tests: `cargo test`
5. Run formatting: `cargo fmt`
6. Run linting: `cargo clippy`
7. Commit your changes with clear, descriptive messages
8. Push to your fork and submit a pull request
## Code Standards
- Follow Rust naming conventions and idioms
- Write comprehensive tests for new functionality
- Add documentation for public APIs
- Keep commits atomic and well-described
- Ensure all CI checks pass
## Testing
- Unit tests should be in the same file as the code they test
- Integration tests go in the `tests/` directory
- Use `cargo test` to run the full test suite
- Aim for meaningful test coverage
## Documentation
- Document all public APIs using doc comments (`///`)
- Include examples in documentation when helpful
- Update the README if adding new features or changing usage
## Questions?
This project is part of the Pragmatic AI Labs learning community. For questions about contributing or the bootcamp itself, please refer to the [main syllabus repository](https://github.com/paiml/ds500-rust-bootcamp).
## Bootcamp Context
This project demonstrates the culmination of skills learned in the 6-week Rust Bootcamp, including:
- Development environment setup
- Project structure and organization
- Data structures and advanced types
- Library development and testing
- Command-line applications and best practices
We encourage contributions that align with these learning objectives and Rust best practices.