cs50_rust 1.0.0

Simple input functions for Rust, inspired by CS50's library
Documentation
# Contributing to cs50_rust

Thank you for your interest in contributing to cs50_rust! This project aims to help students learn Rust through familiar CS50-style functions, and we welcome contributions that further this educational goal.

## How to Contribute

### Reporting Issues

If you find a bug or have a suggestion for improvement, please open an issue on GitHub. When reporting issues, please include details about your environment (OS, Rust version) and provide a minimal example that reproduces the problem. Clear reproduction steps help us fix issues faster.

### Submitting Pull Requests

We love pull requests! Before submitting a PR, please open an issue first to discuss the change you'd like to make. This helps ensure your time is well spent and that the change aligns with the project's educational goals. When you're ready to submit a PR, make sure your code follows the existing style and conventions, includes appropriate documentation and comments, adds tests if introducing new functionality, and updates the README if necessary.

### Development Setup

To set up the project for development, clone the repository, ensure you have Rust installed (we recommend using rustup), and run `cargo build` to verify everything compiles. You can run tests with `cargo test` and check the examples with `cargo run --example basic_usage`.

## Code Style

We follow standard Rust conventions as enforced by rustfmt. Please run `cargo fmt` before submitting your PR. Additionally, run `cargo clippy` to catch common mistakes and improve code quality. Remember that this is an educational project, so code clarity is more important than clever optimizations. Include comments explaining non-obvious logic.

## Educational Focus

Since this is an educational library, please keep in mind that the primary audience is students learning Rust, often coming from C or other languages. API simplicity is crucial - we prefer straightforward interfaces over complex but powerful ones. Documentation should be comprehensive and beginner-friendly. Examples should be clear and demonstrate real use cases. Error messages should be helpful and educational.

## License and Copyright

By contributing to cs50_rust, you agree that your contributions will be licensed under the Apache License 2.0. Per Section 5 of the Apache License 2.0, all contributions to this project are submitted under the terms and conditions of the Apache License 2.0, unless you explicitly state otherwise.

You retain copyright to your contributions while granting the project (and users of the project) a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute your contributions and derivative works.

## Apache License 2.0 Contribution Terms

This project is licensed under the Apache License, Version 2.0. When you submit a pull request, you're agreeing to license your contribution under the same terms. This is standard practice for Apache-licensed projects and ensures legal clarity for all involved.

The Apache License 2.0 includes a patent grant, meaning you're also granting a license to any patents that would be infringed by your contribution. This protects both the project and its users from patent litigation.

## Questions?

If you have questions about contributing, feel free to open an issue for discussion or reach out to the maintainers. We're here to help and appreciate your interest in improving cs50_rust!

## Recognition

Contributors who submit accepted PRs will be added to the project's acknowledgments. We value every contribution, whether it's code, documentation, bug reports, or suggestions.

Thank you for helping make cs50_rust better for everyone learning Rust!