Expand description
A generic URI/IRI handling library compliant with RFC 3986 and RFC 3987.
Examples: Parsing. Building. Reference resolution. Normalization. Percent-decoding. Percent-encoding.
§Terminology
A URI reference is either a URI or a relative reference. If it starts with a scheme
(like http
, ftp
, mailto
, etc.) followed by a colon (:
), it is a URI. For example,
http://example.com/
and mailto:user@example.com
are URIs. Otherwise, it is
a relative reference. For example, //example.org/
, /index.html
, ../
, foo
,
?bar
, and #baz
are relative references.
An IRI (reference) is an internationalized version of URI (reference) which may contain non-ASCII characters.
§Guidance for crate users
Advice for designers of new URI schemes can be found in RFC 7595. Guidance on the specification of URI substructure in standards can be found in RFC 8820. The crate author recommends RFC 9413 for further reading as the long-term interoperability of URI schemes may be of concern.
§Crate features
-
std
(default): Enablesstd
support. Required forError
implementations andAuthority::socket_addrs
. -
net
: Enablesstd::net
orcore::net
support. Required for IP address fields inHost
, forBuilder::host
to take an IP address as argument, and forAuthority::socket_addrs
. Disablingstd
while enablingnet
requires a minimum Rust version of 1.77. -
serde
: Enablesserde
support. Required forSerialize
andDeserialize
implementations.
Modules§
- URI/IRI components.
- Percent-encoding utilities.
- Error types.
Structs§
- A builder for URI/IRI (reference).
- An IRI.
- An IRI reference, i.e., either a IRI or a relative reference.
- A URI.
- A URI reference, i.e., either a URI or a relative reference.