feat(uri): implement fmt::Display for RequestUri (resolves #629)
This commit is contained in:
25
src/uri.rs
25
src/uri.rs
@@ -1,4 +1,5 @@
|
|||||||
//! HTTP RequestUris
|
//! HTTP RequestUris
|
||||||
|
use std::fmt::{Display, self};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use url::ParseError as UrlError;
|
use url::ParseError as UrlError;
|
||||||
@@ -72,6 +73,17 @@ impl FromStr for RequestUri {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Display for RequestUri {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match *self {
|
||||||
|
RequestUri::AbsolutePath(ref path) => f.write_str(path),
|
||||||
|
RequestUri::AbsoluteUri(ref url) => write!(f, "{}", url),
|
||||||
|
RequestUri::Authority(ref path) => f.write_str(path),
|
||||||
|
RequestUri::Star => f.write_str("*")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_uri_fromstr() {
|
fn test_uri_fromstr() {
|
||||||
fn read(s: &str, result: RequestUri) {
|
fn read(s: &str, result: RequestUri) {
|
||||||
@@ -83,3 +95,16 @@ fn test_uri_fromstr() {
|
|||||||
read("hyper.rs", RequestUri::Authority("hyper.rs".to_owned()));
|
read("hyper.rs", RequestUri::Authority("hyper.rs".to_owned()));
|
||||||
read("/", RequestUri::AbsolutePath("/".to_owned()));
|
read("/", RequestUri::AbsolutePath("/".to_owned()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_uri_display() {
|
||||||
|
fn assert_display(expected_string: &str, request_uri: RequestUri) {
|
||||||
|
assert_eq!(expected_string, format!("{}", request_uri));
|
||||||
|
}
|
||||||
|
|
||||||
|
assert_display("*", RequestUri::Star);
|
||||||
|
assert_display("http://hyper.rs/", RequestUri::AbsoluteUri(Url::parse("http://hyper.rs/").unwrap()));
|
||||||
|
assert_display("hyper.rs", RequestUri::Authority("hyper.rs".to_owned()));
|
||||||
|
assert_display("/", RequestUri::AbsolutePath("/".to_owned()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user