# addr-spec
A wicked, fast UTF-8 email address parser and serializer. It provides
- unopinionated, _correct_ parsing of email addresses (defined as `addr-spec` in
[RFC 5322](https://www.rfc-editor.org/rfc/rfc5322)),
- extremely fast serialization and deserialization using low-level memory
management,
- UTF-8 support with NFC normalization as recommended in
[RFC 6532](https://datatracker.ietf.org/doc/html/rfc6532),
- format validation based on the grammar set out in
[Section 3.4.1, RFC 5322](https://www.rfc-editor.org/rfc/rfc5322#section-3.4.1)
and
[Section 3.2, RFC 6532](https://datatracker.ietf.org/doc/html/rfc6532#section-3.2),
- and extremely fast serialization and deserialization. (Did we mention it's
really fast?)
## Features
This crate supports the following features:
- `comments` - This allows parsing (but not serialization; see
[Caveats](#comments)) of comments.
- `literals` - This allows parsing and serialization of literal domains.
- `white-spaces` - This allows parsing (but not serialization; see
[Caveats](#folding-white-spaces)) of whitepaces.
## Caveats
### Folding white spaces
Serializing folding white spaces (abbr. FWS) is not supported since it is
dependent on the transport mechanism. If you need to break the address along
foldable boundaries, you can use `into_serialized_parts` which returns
serialized versions of the local part and domain.
### Comments
Serializing comments is not supported since it is dependent on the transport
mechanism. At the moment, comments are parsed, but skipped as there is no
uniform way of handling them. If you would like comments to be stored, please
file an issue with your use-case.