libdns 0.1.0

Abstracting and implementing DNS zone management for different providers
Documentation
# libdns-rs

This project is a rip-off of [libdns](https://github.com/libdns/libdns) written in Rust.
It defines an abstract API for managing DNS zones and implements it for several widely-used providers.

> [!NOTE]
> This project is my very first (serious) attempt at learning Rust. I am more than thankful for any suggestions and tips on this matter, so please feel welcomed to bring them up in an issue :)

## Using

To add `libdns` to your project, an entry like the following would be enough to include only the abstract DNS zone management traits:

```toml
[dependencies]
libdns = { version = "0" }
```

### Including provider implementations

If you need one or more concrete provider implementations as well, you can simply add their corresponding feature flags to the dependency's `features` field:

| Provider                                        | Feature Flag |
|-------------------------------------------------|--------------|
| [Hetzner]https://www.hetzner.com/dns-console/ | `hetzner`    |

### Choosing TLS backend

The provider implementations use [`reqwest`](https://crates.io/crates/reqwest) for communicating with their APIs whenever possible.
By default, the `default-tls` feature is enabled for reqwest.
These features can be given instead for choosing a different TLS backend (remember to disable the default features):

- `default-tls` (default)
- `rustls-tls`
- `native-tls`
- `native-tls-vendor`

Please refer to [`reqwest`s docs](https://docs.rs/reqwest/0.12.2/reqwest/#optional-features) for an overview on what TLS backend does what.

## Contributing

I am grateful for any contribution to this project, so feel free to request, add or fix provider implementations when neccessary.