See https://www.rfc-editor.org/rfc/rfc3986 for details of parsing algorithm.
Examples
parse_url("http://google.com/")
#> Url: http://google.com/
parse_url("http://google.com:80/")
#> Url: http://google.com:80/
parse_url("http://google.com:80/?a=1&b=2")
#> Url: http://google.com:80/?a=1&b=2
url <- parse_url("http://google.com/")
url$scheme <- "https"
url$query <- list(q = "hello")
build_url(url)
#> [1] "https://google.com/?q=hello"