Skip to main content

web_url/url/
scheme.rs

1use crate::{Scheme, WebUrl};
2
3impl WebUrl {
4    //! Scheme
5
6    /// Gets the scheme.
7    pub fn scheme(&self) -> Scheme<'_> {
8        unsafe { Scheme::new(self.scheme_str()) }
9    }
10
11    /// Gets the scheme string.
12    ///
13    /// This will be a valid lowercase scheme string.
14    fn scheme_str(&self) -> &str {
15        let end: usize = self.scheme_len as usize;
16        &self.url[..end]
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use crate::WebUrl;
23    use std::error::Error;
24    use std::str::FromStr;
25
26    #[test]
27    fn scheme() -> Result<(), Box<dyn Error>> {
28        let url = WebUrl::from_str("https://example.com")?;
29        assert_eq!(url.scheme().as_str(), "https");
30
31        let url = WebUrl::from_str("http://example.com")?;
32        assert_eq!(url.scheme().as_str(), "http");
33
34        let url = WebUrl::from_str("HTTPS://example.com")?;
35        assert_eq!(url.scheme().as_str(), "https");
36
37        Ok(())
38    }
39}