1use crate::{Scheme, WebUrl};
2
3impl WebUrl {
4 pub fn scheme(&self) -> Scheme<'_> {
8 unsafe { Scheme::new(self.scheme_str()) }
9 }
10
11 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}