postgres_secrets 1.0.0

Secure access to Postgres credentials.
Documentation
`postgres_secrets` - Load Postgres credentials securely
-------------------------------------------------------

`postgres_secrets` allows you to load credentials from a file in standard ways that
are compatible with the Postgres tooling ecosystem.

Currently, only the [`pgpass`](https://www.postgresql.org/docs/current/libpq-pgpass.html)
format is supported. Support for [`connection service files`](https://www.postgresql.org/docs/current/libpq-pgservice.html)
may be implemented in the future.

# Use cases

- **Command line tools.** `postgres_secrets` uses the same [pgpass format]https://www.postgresql.org/docs/current/libpq-pgpass.html
    as `psql`. This gives command-line users a seamless experience between `psql` and tools
    written with `postgres_secrets`.
- **In container environments.** `postgres_secrets` makes it easy to pass credentials
    to a container using tools like Docker secrets.

# Key features

## Simple, ergonomic API

- The API uses well-known Rust design patterns, and integrates with the `postgres` crate
- This is all it takes to connect to a database:

```rust
let pgpass = postgres_secrets::PgPass::load()?; // Looks for the pgpass file in it's default location
let creds = pgpass.query()
    .hostname("example.com")?
    .find()?
    .unwrap();
let config: postgres::Config = creds.into();
let db = config.connect(tls)?;
```

## Rock solid and well tested

- The test suite includes [property tests]https://www.postgresql.org/docs/current/libpq-pgpass.html,
    meaning the library has been tested against many randomly-generated pathological inputs.
- While it's possible the library has bugs, you are unlikely to encounter them in normal usage.

## Small, easily auditable codebase

- For those concerned about supply-chain attacks, `postgres_secrets` can be audited in an afternoon.
- All of it's dependencies are canonical, well-known crates.
- The license is public domain, making it easy to fork or vendor.

# Caveats

- This does not behave precisely the same as the parser in `libpq`.
    While unlikely, this could lead to bugs or confusing behavior
    in some circumstances.
- `libpq` is more permissive than this implementation. `libpq` will
    tolerate invalid escape sequences and extra columns. Because
    this behavior could cause bugs and confusing behavior, this
    implementation returns errors in these circumstances.
- `libpq` has special behavior when `localhost` is supplied as the
    hostname. This library does not support this.
- `libpq` performs a permissions check on the pgpass file, and will
    not open a file which is too permissive. This library does not
    perform this check.

# Documentation

[The documentation](https://docs.rs/postgres_secrets) is hosted on `docs.rs`.