core: adding str::as_slice .. most likely broken

This commit is contained in:
Jeff Olson 2012-06-09 20:44:15 -07:00 committed by Brian Anderson
parent 99d2ec3ad1
commit 099d080233

@ -23,6 +23,7 @@ export
as_buf,
as_c_str,
unpack_slice,
as_slice,
// Adding things to and removing things from a string
push_char,
@ -1620,6 +1621,16 @@ pure fn unpack_slice<T>(s: str/&, f: fn(*u8, uint) -> T) -> T {
}
}
pure fn as_slice<T>(s: str,
start: uint, end: uint,
f: fn(str/&) -> T) -> T unsafe {
assert (start <= end);
assert (end <= len(s));
let p = ptr::addr_of(s);
f(::unsafe::reinterpret_cast(
(ptr::offset(p, start), (end - start) * sys::size_of::<u8>())))
}
#[doc = "
Reserves capacity for exactly `n` bytes in the given string, not including
the null terminator.