feat(method): implement AsRef<str> for Method
This lets us obtain the string representation of the method in a convenient and efficient manner.
This commit is contained in:
committed by
Sean McArthur
parent
a1e59fc6f9
commit
c29af72972
@@ -1,6 +1,7 @@
|
||||
//! The HTTP request method
|
||||
use std::fmt;
|
||||
use std::str::FromStr;
|
||||
use std::convert::AsRef;
|
||||
|
||||
use error::HttpError;
|
||||
use self::Method::{Options, Get, Post, Put, Delete, Head, Trace, Connect, Patch,
|
||||
@@ -38,6 +39,23 @@ pub enum Method {
|
||||
Extension(String)
|
||||
}
|
||||
|
||||
impl AsRef<str> for Method {
|
||||
fn as_ref(&self) -> &str {
|
||||
match *self {
|
||||
Options => "OPTIONS",
|
||||
Get => "GET",
|
||||
Post => "POST",
|
||||
Put => "PUT",
|
||||
Delete => "DELETE",
|
||||
Head => "HEAD",
|
||||
Trace => "TRACE",
|
||||
Connect => "CONNECT",
|
||||
Patch => "PATCH",
|
||||
Extension(ref s) => s.as_ref()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Method {
|
||||
/// Whether a method is considered "safe", meaning the request is
|
||||
/// essentially read-only.
|
||||
@@ -147,4 +165,12 @@ mod tests {
|
||||
counter.insert(Get, 1);
|
||||
assert_eq!(Some(&1), counter.get(&Get));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_as_str() {
|
||||
assert_eq!(Get.as_ref(), "GET");
|
||||
assert_eq!(Post.as_ref(), "POST");
|
||||
assert_eq!(Put.as_ref(), "PUT");
|
||||
assert_eq!(Extension("MOVE".to_string()).as_ref(), "MOVE");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user