# address
This library aids in processing network addresses.
## Usage
There are currently no features. You can use all address types with the following dependency:
[dependencies]
address = "0.10.0"
## Address Types
There are 6 core address types:
- **IPAddress**: Either an IPv4 address or an IPv6 address.
- Includes `IPAddress` which is an enum, and the `IPv4Address` & `IPv6Address` struct types.
- **SocketAddress**: An IP address with an associated port.
- Includes the `SocketAddress`, `SocketAddressV4` & `SocketAddressV6` struct types.
- **Domain**: A domain name.
- Includes: the `Domain` & `DomainRef` types.
- **Endpoint**: A domain with an associated port.
- Includes: the `Endpoint` & `EndpointRef` types.
- **Host**: Either a domain or an IP address.
- Includes: the `Host` & `HostRef` types.
- **Authority**: A host with an associated port.
- Includes: the `Authority` & `AuthorityRef` types.
## Owned & Reference Types
Address types that are not `Copy` have owned and `Ref` types (example: `Domain` & `DomainRef`).
This allows both owned types and reference types that do not require allocation. They can be easily
converted between each other. Note: `Cow` was not used to simplify the client code.
## Standard Library Types
IP addresses and socket addresses are different from the standard library counterparts. They can be
easily converted between each other. There is a difference in IPv6 socket addresses where the
`flow_info` and `scope_id` are not included as part of the address.