瀏覽代碼

Use define_encode_set

Steven Fackler 7 年之前
父節點
當前提交
827cc63750
共有 2 個文件被更改,包括 6 次插入14 次删除
  1. 1 0
      src/lib.rs
  2. 5 14
      src/parser.rs

+ 1 - 0
src/lib.rs

@@ -112,6 +112,7 @@ assert_eq!(css_url.as_str(), "http://servo.github.io/rust-url/main.css");
 #[cfg(feature="heapsize")] #[macro_use] extern crate heapsize;
 
 pub extern crate idna;
+#[macro_use]
 pub extern crate percent_encoding;
 
 use encoding::EncodingOverride;

+ 5 - 14
src/parser.rs

@@ -19,22 +19,13 @@ use host::{Host, HostInternal};
 use percent_encoding::{
     utf8_percent_encode, percent_encode,
     SIMPLE_ENCODE_SET, DEFAULT_ENCODE_SET, USERINFO_ENCODE_SET, QUERY_ENCODE_SET,
-    PATH_SEGMENT_ENCODE_SET, EncodeSet
+    PATH_SEGMENT_ENCODE_SET
 };
 
-// The backslash (\) character is treated as a path separator in special URLs
-// so it needs to be additionally escaped in that case.
-#[derive(Clone)]
-struct SPECIAL_PATH_SEGMENT_ENCODE_SET;
-
-impl EncodeSet for SPECIAL_PATH_SEGMENT_ENCODE_SET {
-    #[inline]
-    fn contains(&self, byte: u8) -> bool {
-        match byte {
-            b'\\' => true,
-            _ => PATH_SEGMENT_ENCODE_SET.contains(byte)
-        }
-    }
+define_encode_set! {
+    // The backslash (\) character is treated as a path separator in special URLs
+    // so it needs to be additionally escaped in that case.
+    pub SPECIAL_PATH_SEGMENT_ENCODE_SET = [PATH_SEGMENT_ENCODE_SET] | {'\\'}
 }
 
 pub type ParseResult<T> = Result<T, ParseError>;