Martin HoffmannandGitHub a2ce078a92 The Great octseq Conversion (#160)
This commit swaps the traits and types defined in `base::octets` for their
equivalent in the `octseq` trait. These are mostly the same except that they
facilitate Generic Associated Types as stabilized in Rust 1.65. This results
in subtly changed trait bounds, though mostly these should be invisible to
the user.

One notable change is that `octseq` makes the error type of the
`OctetsBuilder` generic and uses `Infallible` for those types where
appending data will never fail (which, for most users, is all of them). It
provides methods for either case and we are mirroring these in `domain`.
While this means that converting you code to using the PR will require some
work, that work should mostly be removing unwraps – which is nice.

We’re using the opportunity to clean up a few more things that have crept
into the code over time. A list of which will be added here:

*  The range, slice, and split methods on the domain name types have
   changed. They have been merge into a single method taking ranges – except
   for those on `Dname` that require type changes. The split methods now
   take references and don’t change `self` anymore. This is somewhat
   required by the limitations imposed by the new `Octets` trait but feels
   better, anyway.

*  The `Parse`, `Compose`, and `Scan` traits have been demoted to mere
   extension traits for foreign types (primarily the built-in integers, so
   that you can do things like `u16::parse`). All other types now simply have
   methods matching the patterns. Where generics are necessary, dedicated
   traits have been added. E.g., there now are `ParseRecordData` and
   `ComposeRecordData` traits that are implemented by all record data types.

*  Composing of record data and options has been switched to a scheme where
   the size is predetermined whenever possible instead of composing the data
   and then updating the length after. Since this is not possible for record
   data that uses compressed names when compression is actually in use, the
   old scheme is still used in this particular case.
2023-01-10 12:48:41 +01:00
2023-01-10 12:48:41 +01:00
2016-01-26 12:57:02 +01:00
2023-01-10 12:48:41 +01:00
2022-11-07 15:16:15 +01:00
2023-01-04 16:21:19 +01:00

domain – A DNS library for Rust

Current Documentation Mastodon Follow

A library for interacting with the Domain Name System. The crate contains an ever-growing set of building blocks for including DNS functionality in applications.

Currently, these blocks include:

  • basic data structures and functionality for creating and parsing DNS data and messages,
  • support for signing and verifying messages using the TSIG mechanism,
  • experimental support for reading data from DNS master files (also known as zone files),
  • experimental and as yet incomplete support for DNSSEC signing and validation,
  • a simple Tokio-based stub resolver.

If you have ideas, requests, or proposals for future features, pleased don’t hesitate to open Github issues.

Licensing

The domain crate is distributed under the terms of the BSD-3-clause license. See the LICENSE file for details.

S
Description
No description provided
Readme BSD-3-Clause
17 MiB
Languages
Rust 100%