| Crates.io | url-domain-parse |
| lib.rs | url-domain-parse |
| version | 0.1.4 |
| created_at | 2026-01-14 11:33:06.958079+00 |
| updated_at | 2026-01-16 11:21:17.338654+00 |
| description | A Rust library for parsing URLs. |
| homepage | |
| repository | https://github.com/lucas11776-golang/url-domain-parse |
| max_upload_size | |
| id | 2042631 |
| size | 442,075 |
A library for parsing URLs.
url-domain-parse provides some schemes unavailable in other url parsing crates (i.e. sftp, ssh, s3) and it also provides (subdomain, top level domain, second level domain).
url-domain-parse provides easy to use API lets take look as an example were we are parsing IP address.
use url::ParseError;
use url_domain_parse::Url;
fn main() -> Result<(), ParseError> {
let url = Url::parse("http://root:admin@127.0.0.1:83/files/upload?run=background#server=2")?;
assert_eq!("http", url.scheme());
assert_eq!(false, url.cannot_be_a_base());
assert_eq!("root", url.username());
assert_eq!(Some("admin".to_string()), url.password());
assert_eq!(Some("127.0.0.1".to_string()), url.host());
assert_eq!(Some("127.0.0.1".to_string()), url.base_host());
assert_eq!(None, url.domain());
assert_eq!(None, url.subdomain());
assert_eq!(None, url.top_level_domain());
assert_eq!(None, url.second_level_domain());
assert_eq!(Some(83), url.port());
assert_eq!("/files/upload", url.path());
assert_eq!(Some("run=background".to_string()), url.query());
assert_eq!(Some("server=2".to_string()), url.fragment());
println!("{:?}", url);
Ok(())
}
use url::ParseError;
use url_domain_parse::Url;
fn main() -> Result<(), ParseError> {
let url = Url::parse("https://example.com/accounts?page=203#info=1,3")?;
assert_eq!("https", url.scheme());
assert_eq!(false, url.cannot_be_a_base());
assert_eq!("", url.username());
assert_eq!(None, url.password());
assert_eq!(Some("example.com".to_string()), url.host());
assert_eq!(Some("example.com".to_string()), url.base_host());
assert_eq!(Some("example.com".to_string()), url.domain());
assert_eq!(Some("example.com".to_string()), url.domain());
assert_eq!(None, url.subdomain());
assert_eq!(Some("com".to_string()), url.top_level_domain());
assert_eq!(Some("com".to_string()), url.second_level_domain());
assert_eq!(None, url.port());
assert_eq!("/accounts", url.path());
assert_eq!(Some("page=203".to_string()), url.query());
assert_eq!(Some("info=1,3".to_string()), url.fragment());
println!("{:?}", url);
Ok(())
}
use url::ParseError;
use url_domain_parse::Url;
fn main() -> Result<(), ParseError> {
let url = Url::parse("https://docs.v1.example.co.za/profile")?;
assert_eq!("https", url.scheme());
assert_eq!(false, url.cannot_be_a_base());
assert_eq!("", url.username());
assert_eq!(None, url.password());
assert_eq!(Some("docs.v1.example.co.za".to_string()), url.host());
assert_eq!(Some("example.co.za".to_string()), url.base_host());
assert_eq!(Some("docs.v1.example.co.za".to_string()), url.domain());
assert_eq!(Some("docs.v1".to_string()), url.subdomain());
assert_eq!(Some("za".to_string()), url.top_level_domain());
assert_eq!(Some("co.za".to_string()), url.second_level_domain());
assert_eq!(None, url.port());
assert_eq!("/profile", url.path());
assert_eq!(None, url.query());
assert_eq!(None, url.fragment());
println!("{:?}", url);
Ok(())
}