Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More doc examples. #245

Merged
merged 6 commits into from Dec 9, 2016
Merged
@@ -228,6 +228,14 @@ impl<'a> ParseOptions<'a> {

impl Url {
/// Parse an absolute URL from a string.
///
/// # Examples
///
/// ```rust
/// use url::Url;
///
/// let url = Url::parse("https://example.net").unwrap();
/// ```
#[inline]
pub fn parse(input: &str) -> Result<Url, ::ParseError> {
Url::options().parse(input)
@@ -485,6 +493,21 @@ impl Url {
///
/// URLs that do *not* are either path-only like `unix:/run/foo.socket`
/// or cannot-be-a-base like `data:text/plain,Stuff`.
///
/// # Examples
///
/// ```
/// use url::Url;
///
/// let url = Url::parse("ftp://rms@example.com").unwrap();
/// assert!(url.has_authority());
///
/// let url = Url::parse("unix:/run/foo.socket").unwrap();
/// assert!(!url.has_authority());
///
/// let url = Url::parse("data:text/plain,Stuff").unwrap();
/// assert!(!url.has_authority());
/// ```
#[inline]
pub fn has_authority(&self) -> bool {
debug_assert!(self.byte_at(self.scheme_end) == b':');
@@ -496,6 +519,21 @@ impl Url {
///
/// This is the case if the scheme and `:` delimiter are not followed by a `/` slash,
/// as is typically the case of `data:` and `mailto:` URLs.
///
/// # Examples
///
/// ```
/// use url::Url;
///
/// let url = Url::parse("ftp://rms@example.com").unwrap();
/// assert!(!url.cannot_be_a_base());
///
/// let url = Url::parse("unix:/run/foo.socket").unwrap();
/// assert!(!url.cannot_be_a_base());
///
/// let url = Url::parse("data:text/plain,Stuff").unwrap();
/// assert!(url.cannot_be_a_base());
/// ```
#[inline]
pub fn cannot_be_a_base(&self) -> bool {
!self.slice(self.path_start..).starts_with('/')
@@ -557,6 +595,21 @@ impl Url {
}

/// Equivalent to `url.host().is_some()`.
///
/// # Examples
///
/// ```
/// use url::Url;
///
/// let url = Url::parse("ftp://rms@example.com").unwrap();
/// assert!(url.has_host());
///
/// let url = Url::parse("unix:/run/foo.socket").unwrap();
/// assert!(!url.has_host());
///
/// let url = Url::parse("data:text/plain,Stuff").unwrap();
/// assert!(!url.has_host());
/// ```
pub fn has_host(&self) -> bool {
!matches!(self.host, HostInternal::None)
}
@@ -570,6 +623,24 @@ impl Url {
/// don’t have a host.
///
/// See also the `host` method.
///
/// # Examples
///
/// ```
/// use url::Url;
///
/// let url = Url::parse("https://127.0.0.1/index.html").unwrap();
/// assert_eq!(url.host_str(), Some("127.0.0.1"));
///
/// let url = Url::parse("ftp://rms@example.com").unwrap();
/// assert_eq!(url.host_str(), Some("example.com"));
///
/// let url = Url::parse("unix:/run/foo.socket").unwrap();
/// assert_eq!(url.host_str(), None);
///
/// let url = Url::parse("data:text/plain,Stuff").unwrap();
/// assert_eq!(url.host_str(), None);
/// ```
pub fn host_str(&self) -> Option<&str> {
if self.has_host() {
Some(self.slice(self.host_start..self.host_end))
@@ -585,6 +656,24 @@ impl Url {
/// don’t have a host.
///
/// See also the `host_str` method.
///
/// # Examples
///
/// ```
/// use url::Url;
///
/// let url = Url::parse("https://127.0.0.1/index.html").unwrap();
/// assert!(url.host().is_some());
///
/// let url = Url::parse("ftp://rms@example.com").unwrap();
/// assert!(url.host().is_some());
///
/// let url = Url::parse("unix:/run/foo.socket").unwrap();
/// assert!(url.host().is_none());
///
/// let url = Url::parse("data:text/plain,Stuff").unwrap();
/// assert!(url.host().is_none());
/// ```
pub fn host(&self) -> Option<Host<&str>> {
match self.host {
HostInternal::None => None,
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.