bsa3-hash 3.0.0

The hash function used in BSA files for *The Elder Scrolls III: Morrowind*.
Documentation
# bsa3-hash

![GitHub Actions](https://github.com/FaultyRAM/bsa3-hash/actions/workflows/ci.yaml/badge.svg)
[![Crates.io](https://img.shields.io/crates/v/bsa3-hash.svg)](https://crates.io/crates/bsa3-hash)
[![Docs.rs](https://docs.rs/bsa3-hash/badge.svg)](https://docs.rs/bsa3-hash)

bsa3-hash provides a Rust implementation of the hash function used in BSA files for
*The Elder Scrolls III: Morrowind*.

## Usage

Add bsa3-hash to your `Cargo.toml`:

```toml
[dependencies]
bsa3-hash = "^3.0.0"
```

Then call `bsa3_hash::calculate` as needed:

```rust
fn main() {
    assert_eq!(
        bsa3_hash::calculate(r"meshes\m\probe_journeyman_01.nif".as_bytes()),
        0x0002_0336, 0xBB50_0695
    );
}
```

## Benchmarking

bsa3-hash supports benchmarking via [criterion](https://crates.io/crates/criterion). Currently we
test and benchmark against three data sets: the filename/hash lists from Morrowind.bsa,
Tribunal.bsa and Bloodmoon.bsa. To run the benchmarks, simply do the following:

* Install cargo-criterion, if you haven't already done so:
  ```text
  cargo install cargo-criterion
  ```
* Run cargo-criterion in the crate directory:
  ```text
  cargo criterion
  ```

## License

Licensed under either of

* Apache License, Version 2.0,
  ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.