iref 4.0.0

Uniform & Internationalized Resource Identifiers (URIs/IRIs), borrowed and owned.
Documentation
use std::borrow::Cow;

use iref::{IriBuf, IriError};

fn main() -> Result<(), IriError<Cow<'static, str>>> {
	let mut iri = IriBuf::new("https://www.rust-lang.org".to_string())?;

	iri.authority_mut()
		.unwrap()
		.set_port(Some("40".try_into()?));
	iri.set_path("/foo".try_into()?);
	iri.path_mut().push("bar".try_into()?);
	iri.set_query(Some("query".try_into()?));
	iri.set_fragment(Some("fragment".try_into()?));

	assert_eq!(iri, "https://www.rust-lang.org:40/foo/bar?query#fragment");

	Ok(())
}