speedtester 1.0.10

Command line interface for testing internet bandwidth using speedtest.net
Documentation
# Contributing to speedtest

Thank you for your interest in contributing to speedtest! This document provides guidelines and instructions for contributing.

## Code of Conduct

By participating in this project, you agree to maintain a respectful and collaborative environment.

## How to Contribute

### Reporting Bugs

1. Check if the bug has already been reported in [Issues]https://github.com/cumulus13/speedtest/issues
2. If not, create a new issue with:
   - Clear title and description
   - Steps to reproduce
   - Expected vs actual behavior
   - Your environment (OS, Rust version, etc.)
   - Any relevant logs or screenshots

### Suggesting Features

1. Check if the feature has been suggested in [Issues]https://github.com/cumulus13/speedtest/issues
2. If not, create a new issue with:
   - Clear description of the feature
   - Use cases and benefits
   - Possible implementation approach

### Pull Requests

1. Fork the repository
2. Create a new branch (`git checkout -b feature/your-feature-name`)
3. Make your changes
4. Run tests (`cargo test`)
5. Run clippy (`cargo clippy`)
6. Format code (`cargo fmt`)
7. Commit your changes (`git commit -m 'Add some feature'`)
8. Push to your branch (`git push origin feature/your-feature-name`)
9. Open a Pull Request

## Development Setup

### Prerequisites

- Rust 1.70 or later
- Git

### Building

```bash
git clone https://github.com/cumulus13/speedtest.git
cd speedtest
cargo build
```

### Running Tests

```bash
cargo test
```

### Running Clippy

```bash
cargo clippy --all-targets --all-features
```

### Formatting

```bash
cargo fmt
```

## Code Style

- Follow Rust standard style guidelines
- Use `cargo fmt` before committing
- Ensure `cargo clippy` passes without warnings
- Write tests for new features
- Document public APIs

## Testing

- Write unit tests for new functionality
- Ensure all tests pass before submitting PR
- Add integration tests where appropriate

## Documentation

- Update README.md if adding new features
- Document all public functions and types
- Include examples in documentation where helpful

## Commit Messages

- Use clear, descriptive commit messages
- Start with a verb in present tense (Add, Fix, Update, etc.)
- Reference issue numbers where applicable

Example:
```
Add support for IPv6 connections (#123)

- Implement IPv6 socket binding
- Update tests for IPv6
- Add documentation for IPv6 usage
```

## Release Process

Releases are managed by the project maintainers. Version numbers follow [Semantic Versioning](https://semver.org/).

## Questions?

Feel free to open an issue for any questions about contributing.

Thank you for contributing to speedtest! 🦀