libpwquality 0.9.2

libpwquality bindings for Rust
Documentation
# [libpwquality]https://github.com/libpwquality/libpwquality bindings for Rust

[![Crates.io](https://img.shields.io/crates/v/libpwquality)](https://crates.io/crates/libpwquality)
[![Crates.io](https://img.shields.io/crates/d/libpwquality)](https://crates.io/crates/libpwquality)
[![License](https://img.shields.io/github/license/nibon7/libpwquality-rs)](LICENSE)
[![docs.rs](https://img.shields.io/docsrs/libpwquality)](https://docs.rs/libpwquality)
[![Build Status](https://img.shields.io/github/actions/workflow/status/nibon7/libpwquality-rs/ci.yml)](https://github.com/nibon7/libpwquality-rs/actions/workflows/ci.yml?query=branch%3Amain)

## Usage

```sh
cargo add libpwquality
```

## Example

```rust
use libpwquality::{PWQError, PWQuality};

fn main() -> Result<(), PWQError> {
    let pwq = PWQuality::new()?;

    pwq.read_default_config()?
        .min_length(9)
        .max_repeat(2)
        .bad_words(["bad", "password"])?;

    let minlen = pwq.get_min_length();
    println!("minlen={}", minlen);

    let badwords = pwq.get_bad_words()?;
    println!("badwords={:?}", badwords);

    let maxrepeat = pwq.get_max_repeat();
    println!("maxrepeat={}", maxrepeat);

    let password = pwq.generate(32)?;
    println!("password={:?}", password);

    let score = pwq.check(&password, Some("password!"), None)?;
    println!("score={}", score);

    Ok(())
}
```

## Cargo features

* `vX_Y_Z`:  Build with system libpwquality version X.Y.Z.
  v1_0 *Enabled by default.*

* `vendored`: Build with vendored libpwquality.
  This requires cracklib to be installed.
  You can also set `CRACKLIB_INCLUDE_PATH` and `CRACKLIB_LIBRARY_PATH`
  environment variables to specify the include path and library path.
  *Disabled by default.*

* `vendored-cracklib`: Build with vendored libpwquality and cracklib.
  The build script will try to guess the path of cracklib dictionaries,
  but you can set `DEFAULT_CRACKLIB_DICT` environment variable to override it.
  *Disabled by default.*