core_str::StrExt::as_bytes(self)
}
- /// Converts `self` to a mutable byte slice.
- ///
- /// # Unsafety
- ///
- /// The `str` type guarantees that its contents are UTF-8 bytes, which can
- /// be violated using this function, leading to memory-unsafeties in other
- /// string functions.
- #[unstable(feature = "str_as_bytes_mut")]
- #[inline(always)]
- pub unsafe fn as_bytes_mut(&mut self) -> &mut [u8] {
- core_str::StrExt::as_bytes_mut(self)
- }
-
/// Returns a raw pointer to the `&str`'s buffer.
///
/// The caller must ensure that the string outlives this pointer, and
fn char_at(&self, i: usize) -> char;
fn char_at_reverse(&self, i: usize) -> char;
fn as_bytes<'a>(&'a self) -> &'a [u8];
- unsafe fn as_bytes_mut<'a>(&'a mut self) -> &'a mut [u8];
fn find<'a, P: Pattern<'a>>(&'a self, pat: P) -> Option<usize>;
fn rfind<'a, P: Pattern<'a>>(&'a self, pat: P) -> Option<usize>
where P::Searcher: ReverseSearcher<'a>;
unsafe { mem::transmute(self) }
}
- #[inline]
- unsafe fn as_bytes_mut(&mut self) -> &mut [u8] {
- mem::transmute(self)
- }
-
fn find<'a, P: Pattern<'a>>(&'a self, pat: P) -> Option<usize> {
pat.into_searcher(self).next_match().map(|(i, _)| i)
}
use prelude::v1::*;
+use mem;
use ops::Range;
/// Extension methods for ASCII-subset only operations on owned strings
}
fn make_ascii_uppercase(&mut self) {
- let me: &mut [u8] = unsafe { self.as_bytes_mut() };
+ let me: &mut [u8] = unsafe { mem::transmute(self) };
me.make_ascii_uppercase()
}
fn make_ascii_lowercase(&mut self) {
- let me: &mut [u8] = unsafe { self.as_bytes_mut() };
+ let me: &mut [u8] = unsafe { mem::transmute(self) };
me.make_ascii_lowercase()
}
}
#![feature(slice_bytes)]
#![feature(slice_patterns)]
#![feature(staged_api)]
-#![feature(str_as_bytes_mut)]
#![feature(str_char)]
#![feature(str_internals)]
#![feature(unboxed_closures)]