# core > Core library for implementing Battle of the Centerländ. ## Installation To be able to use this crate, add it to your `Cargo.toml`: ```toml [dependencies] botc-core = { package = "uulm-sopra23-group03-core", version = "0.4" } ``` While the package is named `uulm-sopra23-group03-core` this adds it to your project as `botc-core`. ### Features There are features not enabled by default for specific use cases. ```toml [dependencies] botc-core = { package = "uulm-sopra23-group03-core", version = "0.4", features = ["client"] } ``` To enable a feature, specify it with the dependency in your `Cargo.toml`: | Feature | Description | |----------|------------------------------------------------------------------------------------------------------------------------------| | `client` | Enables sink/stream based client functionality with the `client` module. Can be used for implementing a client for the game. | | `ai` | Enables the `ai` with training data structures. | --- ## Build ### Prerequisites - [Rust][rust] - [Cargo][cargo] - [clippy][clippy] (for code analysis) - [rustfmt][rustfmt] (for code formatting) Everything can be installed with [`rustup`][rustup]: ``` # Update rustup's information. rustup update # Install the stable Rust toolchain (if not already present). rustup toolchain add stable # Add rustfmt. rustup component add rustfmt # Add clippy. rustup component add clippy ``` ### Testing #### Code Formatting This should not output anything when the code is formatted corretcly: ``` cargo fmt --check ``` Run the following to automatically format the Rust code: ``` cargo fmt ``` #### Code Analysis Run the following to check the code for common mistakes: ``` cargo clippy --all-features ``` #### Tests Run tests with the following: ``` cargo test --all-features ``` ### Documentation Documentation for the local version of the crate can be built and opened with the following: ``` cargo doc --all-features --open ``` [rust]: https://rust-lang.org [rustup]: https://rustup.rs [cargo]: https://doc.rust-lang.org/cargo [clippy]: https://github.com/rust-lang/rust-clippy [rustfmt]: https://github.com/rust-lang/rustfmt