PackageTrack
Sign in Get early access

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 2025
2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 21
  1. 0.4.1 04 Nov 2025
    Release notes
    Open source →
  2. 0.4.0 03 Nov 2025
    Release notes

    Highlights

    Other changes

    Added

    • Added resolve::Resolver and normalize::Normalizer which 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 alloc feature required for memory-allocating types and functions.
    • Added an impl-error feature which, if enabled when std is disabled, implements core::error::Error instead.
    • Implemented Hash for Scheme.

    Changed

    • Renamed module encoding to pct_enc which stands for "percent-encoding".
    • Changed ParseError not to include input. Changed return types of parse functions as a result.
    • Changed Decode to an iterator. Renamed into_* methods to to_* as a result.
    • Split EString::encode into encode_{str, bytes}.
    • Introduced ConvertError for TryFrom impls.
    • Exposed information of and implemented PartialEq and Eq on ParseError, BuildError, and ResolveError.
    • Moved Builder into module build.
    • Removed module error in favor of placing error types next to related types.
    • Closed another loophone in the reference resolution algorithm.
    • Bumped MSRV to 1.68.
    Open source →
  3. 0.3.2 12 Oct 2024
    Release notes
    • Added EString::{with_capacity, capacity, clear} methods.
    • Added with_fragment and set_fragment methods to URI/IRI (reference) types.
    Open source →
  4. 0.3.1 29 Sep 2024
    Release notes
    • Fixed a bug where {Uri, Iri}::try_from panic when passed a URI/IRI reference that consists of only scheme characters (#28).
    • Fixed a bug where Iri::to_uri and IriRef::to_uri_ref omit the colon delimiter before a port.
    Open source →
  5. 0.3.0 29 Sep 2024
    Release notes

    Highlights

    • Reintroduced a Uri type that represents a URI (always with a scheme).
    • Added support for IRIs (RFC 3987) by introducing Iri and IriRef types.
    • Dropped net from default features list.

    Other changes

    Added

    • Implemented From and TryFrom between URI/IRI (reference) types and strings.
    • Added IRI encoders IUserinfo, IRegName, IPort, IPath, IQuery, IFragment, and IData.
    • Changed Authority and Host to take encoder type parameters which default to URI encoders.
    • Added type aliases IAuthority and IHost that use IRI encoders.
    • Added Table::{or_ucschar, or_iprivate}.

    Removed

    • Removed UriRef::is_uri in favor of has_scheme.

    Changed

    • Replaced EString::push_byte with EString::push which takes char as argument.
    • Renamed EStr<Path>::segments to segments_if_absolute for clarity.
    • Renamed Table::gen to new, and Table::enc to or_pct_encoded.
    • Changed Table::allows to take char as argument.
    Open source →
  6. 0.3.0-alpha.0 16 Sep 2024 pre-release
    Release notes

    Bump version to 0.3.0-alpha.0

    Open source →
  7. 0.2.0 30 Jul 2024
    Release notes

    Highlights

    • Added support for building, resolving and normalizing URI references.
    • Renamed Uri to UriRef because it represents a URI reference, not a URI (see #19).
    • Added a type parameter on EStr which represents an encoder determining which characters must be percent-encoded, along with 7 encoders: Userinfo, RegName, Port, Path, Query, Fragment, and Data.
    • Added EString which 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} and Authority::has_{userinfo, port} methods.
    • Added {EStr, Authority}::EMPTY constants.
    • Added EStr::{len, is_empty, rsplit_once} methods.
    • Added a type parameter on ParseError which represents the input type and ParseError::{into, strip}_input methods.
    • Added net and serde crate features.

    Removed

    • Removed in-place mutable variant of URI reference (Uri<&mut [u8]>) and related APIs.
    • Removed ParseErrorKind enum and ParseError::{index, kind} methods.
    • Removed ipv_future and rfc6874bis crate features.
    • Removed Uri<&str>::dup method as UriRef<&str> is now Copy.
    • Removed Scheme::{to_lowercase, eq_lowercase} methods in favor of the new case-insensitive PartialEq implementation on Scheme.

    Changed

    • Merged Uri::parse and Uri::parse_from into UriRef::parse with generics.
    • Authority is now directly borrowed from the string instead of the UriRef.
    • Removed Uri::{is_relative, is_absolute} in favor of the newly added UriRef::is_uri.
    • Removed Host, renamed HostData to Host, changed Authority::host to return &str, and added Authority::host_parsed which returns Host.
    • Changed Host: Ipv6 is now a tuple variant with a single Ipv6Addr field, and IpvFuture is now a non-exhaustive unit variant.
    • Removed the dedicated Path type, moved the utility methods Path::{is_absolute, is_rootless, segments} onto EStr<Path>, and changed UriRef::path to return &EStr<Path>.
    • Changed Authority::port to return Option<&EStr<Port>>.
    • Changed UriRef<String>::borrow to return UriRef<&str>.
    • Changed EStr::new to return Option instead and added EStr::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.
    Open source →
  8. 0.2.0-alpha.8 02 Jul 2024 pre-release
    Release notes

    Bump version to 0.2.0-alpha.8

    Open source →
  9. 0.2.0-alpha.7 21 Jun 2024 pre-release
    Release notes

    Bump version to 0.2.0-alpha.7

    Open source →
  10. 0.2.0-alpha.6 09 Jun 2024 pre-release
    Release notes

    Bump version to 0.2.0-alpha.6

    Open source →
  11. 0.2.0-alpha.5 17 Apr 2024 pre-release

    Nothing published for this version

  12. 0.2.0-alpha.4 09 Apr 2024 pre-release

    Nothing published for this version

  13. 0.2.0-alpha.3 08 Apr 2024 pre-release

    Nothing published for this version

  14. 0.2.0-alpha.2 29 Mar 2024 pre-release

    Nothing published for this version

  15. 0.2.0-alpha.1 24 Mar 2024 pre-release

    Nothing published for this version

  16. 0.2.0-alpha.0 07 Mar 2024 pre-release

    Nothing published for this version

  17. 0.1.4 11 Mar 2023

    Nothing published for this version

  18. 0.1.3 17 May 2022

    Nothing published for this version

  19. 0.1.2 16 Apr 2022 withdrawn

    Nothing published for this version

  20. 0.1.1 14 Apr 2022 withdrawn

    Nothing published for this version

  21. 0.1.0 09 Apr 2022 withdrawn

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive