diff --git a/percent_encoding/src/ascii_set.rs b/percent_encoding/src/ascii_set.rs index 41cd235e..112d173e 100644 --- a/percent_encoding/src/ascii_set.rs +++ b/percent_encoding/src/ascii_set.rs @@ -22,9 +22,9 @@ use core::{mem, ops}; /// use percent_encoding::{AsciiSet, CONTROLS}; /// /// /// https://url.spec.whatwg.org/#fragment-percent-encode-set -/// const FRAGMENT: &AsciiSet = &CONTROLS.add(b' ').add(b'"').add(b'<').add(b'>').add(b'`'); +/// const FRAGMENT: AsciiSet = CONTROLS.add(b' ').add(b'"').add(b'<').add(b'>').add(b'`'); /// ``` -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct AsciiSet { mask: [Chunk; ASCII_RANGE_LEN / BITS_PER_CHUNK], } @@ -104,7 +104,7 @@ impl ops::Not for AsciiSet { /// Note that this includes the newline and tab characters, but not the space 0x20. /// /// -pub const CONTROLS: &AsciiSet = &AsciiSet { +pub const CONTROLS: AsciiSet = AsciiSet { mask: [ !0_u32, // C0: 0x00 to 0x1F (32 bits set) 0, @@ -134,7 +134,7 @@ static_assert! { /// Everything that is not an ASCII letter or digit. /// /// This is probably more eager than necessary in any context. -pub const NON_ALPHANUMERIC: &AsciiSet = &CONTROLS +pub const NON_ALPHANUMERIC: AsciiSet = CONTROLS .add(b' ') .add(b'!') .add(b'"') diff --git a/percent_encoding/src/lib.rs b/percent_encoding/src/lib.rs index fba0cd91..93bd025e 100644 --- a/percent_encoding/src/lib.rs +++ b/percent_encoding/src/lib.rs @@ -32,7 +32,7 @@ //! use percent_encoding::{utf8_percent_encode, AsciiSet, CONTROLS}; //! //! /// https://url.spec.whatwg.org/#fragment-percent-encode-set -//! const FRAGMENT: &AsciiSet = &CONTROLS.add(b' ').add(b'"').add(b'<').add(b'>').add(b'`'); +//! const FRAGMENT: AsciiSet = CONTROLS.add(b' ').add(b'"').add(b'<').add(b'>').add(b'`'); //! //! assert_eq!(utf8_percent_encode("foo ", FRAGMENT).to_string(), "foo%20%3Cbar%3E"); //! ``` @@ -114,7 +114,7 @@ pub fn percent_encode_byte(byte: u8) -> &'static str { /// assert_eq!(percent_encode(b"foo bar?", NON_ALPHANUMERIC).to_string(), "foo%20bar%3F"); /// ``` #[inline] -pub fn percent_encode<'a>(input: &'a [u8], ascii_set: &'static AsciiSet) -> PercentEncode<'a> { +pub fn percent_encode(input: &[u8], ascii_set: AsciiSet) -> PercentEncode<'_> { PercentEncode { bytes: input, ascii_set, @@ -133,7 +133,7 @@ pub fn percent_encode<'a>(input: &'a [u8], ascii_set: &'static AsciiSet) -> Perc /// assert_eq!(utf8_percent_encode("foo bar?", NON_ALPHANUMERIC).to_string(), "foo%20bar%3F"); /// ``` #[inline] -pub fn utf8_percent_encode<'a>(input: &'a str, ascii_set: &'static AsciiSet) -> PercentEncode<'a> { +pub fn utf8_percent_encode(input: &str, ascii_set: AsciiSet) -> PercentEncode<'_> { percent_encode(input.as_bytes(), ascii_set) } @@ -141,7 +141,7 @@ pub fn utf8_percent_encode<'a>(input: &'a str, ascii_set: &'static AsciiSet) -> #[derive(Debug, Clone, PartialEq, Eq)] pub struct PercentEncode<'a> { bytes: &'a [u8], - ascii_set: &'static AsciiSet, + ascii_set: AsciiSet, } impl<'a> Iterator for PercentEncode<'a> { @@ -378,8 +378,8 @@ mod tests { } #[test] - fn percent_encode_accepts_ascii_set_ref() { - let encoded = percent_encode(b"foo bar?", &AsciiSet::EMPTY); + fn percent_encode_accepts_value() { + let encoded = percent_encode(b"foo bar?", AsciiSet::EMPTY); assert_eq!(encoded.collect::(), "foo bar?"); } @@ -405,8 +405,8 @@ mod tests { } #[test] - fn utf8_percent_encode_accepts_ascii_set_ref() { - let encoded = super::utf8_percent_encode("foo bar?", &AsciiSet::EMPTY); + fn utf8_percent_encode_accepts_value() { + let encoded = super::utf8_percent_encode("foo bar?", AsciiSet::EMPTY); assert_eq!(encoded.collect::(), "foo bar?"); } diff --git a/url/src/parser.rs b/url/src/parser.rs index 8dd054df..c9c638e6 100644 --- a/url/src/parser.rs +++ b/url/src/parser.rs @@ -16,13 +16,13 @@ use form_urlencoded::EncodingOverride; use percent_encoding::{percent_encode, utf8_percent_encode, AsciiSet, CONTROLS}; /// https://url.spec.whatwg.org/#fragment-percent-encode-set -const FRAGMENT: &AsciiSet = &CONTROLS.add(b' ').add(b'"').add(b'<').add(b'>').add(b'`'); +const FRAGMENT: AsciiSet = CONTROLS.add(b' ').add(b'"').add(b'<').add(b'>').add(b'`'); /// https://url.spec.whatwg.org/#path-percent-encode-set -const PATH: &AsciiSet = &FRAGMENT.add(b'#').add(b'?').add(b'{').add(b'}'); +const PATH: AsciiSet = FRAGMENT.add(b'#').add(b'?').add(b'{').add(b'}'); /// https://url.spec.whatwg.org/#userinfo-percent-encode-set -pub(crate) const USERINFO: &AsciiSet = &PATH +pub(crate) const USERINFO: AsciiSet = PATH .add(b'/') .add(b':') .add(b';') @@ -34,15 +34,15 @@ pub(crate) const USERINFO: &AsciiSet = &PATH .add(b'^') .add(b'|'); -pub(crate) const PATH_SEGMENT: &AsciiSet = &PATH.add(b'/').add(b'%'); +pub(crate) const PATH_SEGMENT: AsciiSet = PATH.add(b'/').add(b'%'); // The backslash (\) character is treated as a path separator in special URLs // so it needs to be additionally escaped in that case. -pub(crate) const SPECIAL_PATH_SEGMENT: &AsciiSet = &PATH_SEGMENT.add(b'\\'); +pub(crate) const SPECIAL_PATH_SEGMENT: AsciiSet = PATH_SEGMENT.add(b'\\'); // https://url.spec.whatwg.org/#query-state -const QUERY: &AsciiSet = &CONTROLS.add(b' ').add(b'"').add(b'#').add(b'<').add(b'>'); -const SPECIAL_QUERY: &AsciiSet = &QUERY.add(b'\''); +const QUERY: AsciiSet = CONTROLS.add(b' ').add(b'"').add(b'#').add(b'<').add(b'>'); +const SPECIAL_QUERY: AsciiSet = QUERY.add(b'\''); pub type ParseResult = Result;