From a1b305c8e526700e3e16e51d576691ac4ebdc335 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Thu, 12 Apr 2012 21:46:41 -0700 Subject: [PATCH] Remove or annotate FIXMEs in core::str Trimmed exports in core::str::unsafe. Annotated other FIXMEs. Also moved the test for str::unsafe::from_buf_len inside str_unsafe since it's no longer exported. If it's not good to do that, let me know. --- src/libcore/str.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/libcore/str.rs b/src/libcore/str.rs index 8f9e2ab0f64..5c4d46a89aa 100644 --- a/src/libcore/str.rs +++ b/src/libcore/str.rs @@ -445,7 +445,7 @@ fn split_inner(s: str, sepfn: fn(cc: char) -> bool, count: uint, result } -// FIXME use Boyer-Moore +// See Issue #1932 for why this is a naive search fn iter_matches(s: str, sep: str, f: fn(uint, uint)) { let sep_len = len(sep), l = len(s); assert sep_len > 0u; @@ -581,7 +581,7 @@ pure fn le(&&a: str, &&b: str) -> bool { a <= b } #[doc = "String hash function"] fn hash(&&s: str) -> uint { // djb hash. - // FIXME: replace with murmur. + // FIXME: replace with murmur. (see #859 and #1616) let mut u: uint = 5381u; for each(s) {|c| u *= 33u; u += c as uint; } ret u; @@ -1072,7 +1072,7 @@ or equal to `len(s)`. "] fn find_str_between(haystack: str, needle: str, start: uint, end:uint) -> option { - // FIXME: Boyer-Moore should be significantly faster + // See Issue #1932 for why this is a naive search assert end <= len(haystack); let needle_len = len(needle); if needle_len == 0u { ret some(start); } @@ -1600,16 +1600,11 @@ fn capacity(&&s: str) -> uint unsafe { #[doc = "Unsafe operations"] mod unsafe { export - // FIXME: stop exporting several of these from_buf, - from_buf_len, from_c_str, - from_c_str_len, from_bytes, - from_byte, slice_bytes, push_byte, - push_bytes, pop_byte, shift_byte, set_len; @@ -1740,6 +1735,15 @@ mod unsafe { let null = ptr::mut_offset(ptr::mut_addr_of((*repr).data), new_len); *null = 0u8; } + + #[test] + fn test_from_buf_len() unsafe { + let a = [65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 0u8]; + let b = vec::unsafe::to_ptr(a); + let c = from_buf_len(b, 3u); + assert (c == "AAA"); + } + } #[doc = "Extension methods for strings"] @@ -2439,14 +2443,6 @@ mod tests { assert (c == "AAAAAAA"); } - #[test] - fn test_from_buf_len() unsafe { - let a = [65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 0u8]; - let b = vec::unsafe::to_ptr(a); - let c = unsafe::from_buf_len(b, 3u); - assert (c == "AAA"); - } - #[test] #[ignore(cfg(target_os = "win32"))] #[should_fail]