fluent-uri
A generic URI/IRI handling library compliant with RFC 3986/3987.
0.4.1
63M downloads/mo
#1075 most downloaded on crates.io
yescallop/fluent-uri-rs
What this package is like to depend on
Last release 9 months ago
04 Nov 2025
Ships unpredictably
gaps range from 8 days to 13 months
Most releases are documented
notes for 6 of 8 stable releases
3 versions withdrawn
withdrawn after publishing
4 years old
21 releases · first in 2022
2 releases in the last 12 months
see the full history below
Release timeline
21 releases · Apr 2022 to Nov 2025Releases
latest 21-
0.4.104 Nov 2025Release notes
Open source →- Stopped pulling in
serdewhen onlyalloccrate feature is enabled. - Deprecated
EString::encode_bytes. - Added
EStr::encode_byte.
- Stopped pulling in
-
0.4.003 Nov 2025Release notes
Open source →Highlights
- Made default port normalization a default for select schemes.
Other changes
Added
- Added
resolve::Resolverandnormalize::Normalizerwhich can be configured to disallow underflow in path resolution and to remove custom default ports in normalization. - Added
{Uri, UriRef, Iri, IriRef}::strip_fragment. - Added an opt-out
allocfeature required for memory-allocating types and functions. - Added an
impl-errorfeature which, if enabled whenstdis disabled, implementscore::error::Errorinstead. - Implemented
HashforScheme.
Changed
- Renamed module
encodingtopct_encwhich stands for "percent-encoding". - Changed
ParseErrornot to include input. Changed return types ofparsefunctions as a result. - Changed
Decodeto an iterator. Renamedinto_*methods toto_*as a result. - Split
EString::encodeintoencode_{str, bytes}. - Introduced
ConvertErrorforTryFromimpls. - Exposed information of and implemented
PartialEqandEqonParseError,BuildError, andResolveError. - Moved
Builderinto modulebuild. - Removed module
errorin favor of placing error types next to related types. - Closed another loophone in the reference resolution algorithm.
- Bumped MSRV to 1.68.
-
0.3.212 Oct 2024Release notes
Open source →- Added
EString::{with_capacity, capacity, clear}methods. - Added
with_fragmentandset_fragmentmethods to URI/IRI (reference) types.
- Added
-
0.3.129 Sep 2024Release notes
Open source →- Fixed a bug where
{Uri, Iri}::try_frompanic when passed a URI/IRI reference that consists of only scheme characters (#28). - Fixed a bug where
Iri::to_uriandIriRef::to_uri_refomit the colon delimiter before a port.
- Fixed a bug where
-
0.3.029 Sep 2024Release notes
Open source →Highlights
- Reintroduced a
Uritype that represents a URI (always with a scheme). - Added support for IRIs (RFC 3987) by introducing
IriandIriReftypes. - Dropped
netfrom default features list.
Other changes
Added
- Implemented
FromandTryFrombetween URI/IRI (reference) types and strings. - Added IRI encoders
IUserinfo,IRegName,IPort,IPath,IQuery,IFragment, andIData. - Changed
AuthorityandHostto take encoder type parameters which default to URI encoders. - Added type aliases
IAuthorityandIHostthat use IRI encoders. - Added
Table::{or_ucschar, or_iprivate}.
Removed
- Removed
UriRef::is_uriin favor ofhas_scheme.
Changed
- Replaced
EString::push_bytewithEString::pushwhich takescharas argument. - Renamed
EStr<Path>::segmentstosegments_if_absolutefor clarity. - Renamed
Table::gentonew, andTable::enctoor_pct_encoded. - Changed
Table::allowsto takecharas argument.
- Reintroduced a
-
0.3.0-alpha.016 Sep 2024 pre-release -
0.2.030 Jul 2024Release notes
Open source →Highlights
- Added support for building, resolving and normalizing URI references.
- Renamed
UritoUriRefbecause it represents a URI reference, not a URI (see #19). - Added a type parameter on
EStrwhich represents an encoder determining which characters must be percent-encoded, along with 7 encoders:Userinfo,RegName,Port,Path,Query,Fragment, andData. - Added
EStringwhich is a percent-encoded, growable string. - Dropped all unsafe code.
Other changes
Added
- Implemented appropriate traits on all types.
- Added
Scheme::{new, new_or_panic}associated functions. - Added
Authority::{port_to_u16, socket_addrs}utility methods. - Added
Uri::has_{scheme, authority, query, fragment}andAuthority::has_{userinfo, port}methods. - Added
{EStr, Authority}::EMPTYconstants. - Added
EStr::{len, is_empty, rsplit_once}methods. - Added a type parameter on
ParseErrorwhich represents the input type andParseError::{into, strip}_inputmethods. - Added
netandserdecrate features.
Removed
- Removed in-place mutable variant of URI reference (
Uri<&mut [u8]>) and related APIs. - Removed
ParseErrorKindenum andParseError::{index, kind}methods. - Removed
ipv_futureandrfc6874biscrate features. - Removed
Uri<&str>::dupmethod asUriRef<&str>is nowCopy. - Removed
Scheme::{to_lowercase, eq_lowercase}methods in favor of the new case-insensitivePartialEqimplementation onScheme.
Changed
- Merged
Uri::parseandUri::parse_fromintoUriRef::parsewith generics. Authorityis now directly borrowed from the string instead of theUriRef.- Removed
Uri::{is_relative, is_absolute}in favor of the newly addedUriRef::is_uri. - Removed
Host, renamedHostDatatoHost, changedAuthority::hostto return&str, and addedAuthority::host_parsedwhich returnsHost. - Changed
Host:Ipv6is now a tuple variant with a singleIpv6Addrfield, andIpvFutureis now a non-exhaustive unit variant. - Removed the dedicated
Pathtype, moved the utility methodsPath::{is_absolute, is_rootless, segments}ontoEStr<Path>, and changedUriRef::pathto return&EStr<Path>. - Changed
Authority::portto returnOption<&EStr<Port>>. - Changed
UriRef<String>::borrowto returnUriRef<&str>. - Changed
EStr::newto returnOptioninstead and addedEStr::new_or_panic. - Changed module structure.
- Extracted a code pattern into the borrow-or-share crate.
- Bumped MSRV to 1.65 (was 1.59).
- Reworked documentation.
-
0.2.0-alpha.802 Jul 2024 pre-release -
0.2.0-alpha.721 Jun 2024 pre-release -
0.2.0-alpha.609 Jun 2024 pre-release -
0.2.0-alpha.517 Apr 2024 pre-releaseNothing published for this version
-
0.2.0-alpha.409 Apr 2024 pre-releaseNothing published for this version
-
0.2.0-alpha.308 Apr 2024 pre-releaseNothing published for this version
-
0.2.0-alpha.229 Mar 2024 pre-releaseNothing published for this version
-
0.2.0-alpha.124 Mar 2024 pre-releaseNothing published for this version
-
0.2.0-alpha.007 Mar 2024 pre-releaseNothing published for this version
-
0.1.411 Mar 2023Nothing published for this version
-
0.1.317 May 2022Nothing published for this version
-
0.1.216 Apr 2022 withdrawnNothing published for this version
-
0.1.114 Apr 2022 withdrawnNothing published for this version
-
0.1.009 Apr 2022 withdrawnNothing published for this version