mirror of https://github.com/rwf2/Rocket.git
Add `Uncased::into_boxed_uncased_str` and `UncasedStr::into_uncased` methods
This commit is contained in:
parent
86c7a67b02
commit
0900f330a7
|
@ -55,6 +55,25 @@ impl UncasedStr {
|
||||||
pub fn as_str(&self) -> &str {
|
pub fn as_str(&self) -> &str {
|
||||||
&self.0
|
&self.0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Converts a `Box<UncasedStr>` into an `Uncased` without copying or allocating.
|
||||||
|
///
|
||||||
|
/// # Example
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use rocket::http::uncased::Uncased;
|
||||||
|
///
|
||||||
|
/// let uncased = Uncased::new("Hello!");
|
||||||
|
/// let boxed = uncased.clone().into_boxed_uncased();
|
||||||
|
/// assert_eq!(boxed.into_uncased(), uncased);
|
||||||
|
/// ```
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn into_uncased(self: Box<UncasedStr>) -> Uncased<'static> {
|
||||||
|
unsafe {
|
||||||
|
let raw_str = Box::into_raw(self) as *mut str;
|
||||||
|
Uncased::from(Box::from_raw(raw_str).into_string())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl PartialEq for UncasedStr {
|
impl PartialEq for UncasedStr {
|
||||||
|
@ -172,6 +191,24 @@ impl<'s> Uncased<'s> {
|
||||||
self.string.into_owned()
|
self.string.into_owned()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Converts `self` into a `Box<UncasedStr>`.
|
||||||
|
///
|
||||||
|
/// # Example
|
||||||
|
///
|
||||||
|
/// ```rust
|
||||||
|
/// use rocket::http::uncased::Uncased;
|
||||||
|
///
|
||||||
|
/// let boxed = Uncased::new("Content-Type").into_boxed_uncased();
|
||||||
|
/// assert_eq!(&*boxed, "content-type");
|
||||||
|
/// ```
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn into_boxed_uncased(self) -> Box<UncasedStr> {
|
||||||
|
unsafe {
|
||||||
|
let raw_str = Box::into_raw(self.string.into_owned().into_boxed_str());
|
||||||
|
Box::from_raw(raw_str as *mut UncasedStr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the inner `Cow`.
|
/// Returns the inner `Cow`.
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
|
|
Loading…
Reference in New Issue