@@ -408,19 +408,7 @@ pub pure fn chars(s: &str) -> ~[char] {
408408 * `begin`.
409409 */
410410pub pure fn substr ( s : & str , begin : uint , n : uint ) -> ~str {
411- slice_DBG_UNIQ ( s, begin, begin + count_bytes ( s, begin, n) )
412- }
413-
414- /**
415- * Returns a slice of the given string from the byte range [`begin`..`end`)
416- *
417- * Fails when `begin` and `end` do not point to valid characters or
418- * beyond the last character of the string
419- */
420- pub pure fn slice_DBG_UNIQ ( s : & str , begin : uint , end : uint ) -> ~str {
421- fail_unless ! ( is_char_boundary( s, begin) ) ;
422- fail_unless ! ( is_char_boundary( s, end) ) ;
423- unsafe { raw:: slice_DBG_UNIQ_bytes ( s, begin, end) }
411+ slice_DBG_BRWD ( s, begin, begin + count_bytes ( s, begin, n) ) . to_owned ( )
424412}
425413
426414/**
@@ -2287,7 +2275,6 @@ pub trait StrSlice {
22872275 pure fn is_alphanumeric(&self) -> bool;
22882276 pure fn len(&self) -> uint;
22892277 pure fn char_len(&self) -> uint;
2290- pure fn slice_DBG_UNIQ(&self, begin: uint, end: uint) -> ~str;
22912278 pure fn slice_DBG_BRWD(&self, begin: uint, end: uint) -> &'self str;
22922279 pure fn split(&self, sepfn: &fn(char) -> bool) -> ~[~str];
22932280 pure fn split_char(&self, sep: char) -> ~[~str];
@@ -2403,17 +2390,6 @@ impl StrSlice for &'self str {
24032390 * beyond the last character of the string
24042391 */
24052392 #[inline]
2406- pure fn slice_DBG_UNIQ(&self, begin: uint, end: uint) -> ~str {
2407- slice_DBG_UNIQ(*self, begin, end)
2408- }
2409- /**
2410- * Returns a slice of the given string from the byte range
2411- * [`begin`..`end`)
2412- *
2413- * Fails when `begin` and `end` do not point to valid characters or
2414- * beyond the last character of the string
2415- */
2416- #[inline]
24172393 pure fn slice_DBG_BRWD(&self, begin: uint, end: uint) -> &'self str {
24182394 slice_DBG_BRWD(*self, begin, end)
24192395 }
@@ -2472,7 +2448,7 @@ impl StrSlice for &'self str {
24722448 pure fn trim_right(&self) -> ~str { trim_right(*self) }
24732449
24742450 #[inline]
2475- pure fn to_owned(&self) -> ~str { self.slice_DBG_UNIQ(0, self.len() ) }
2451+ pure fn to_owned(&self) -> ~str { from_slice(* self) }
24762452
24772453 #[inline]
24782454 pure fn to_managed(&self) -> @str {
@@ -2903,25 +2879,24 @@ mod tests {
29032879
29042880 #[test]
29052881 fn test_unsafe_slice() {
2906- unsafe {
2907- fail_unless!(~" ab" == raw::slice_DBG_UNIQ_bytes(~" abc", 0, 2));
2908- fail_unless!(~" bc" == raw::slice_DBG_UNIQ_bytes(~" abc", 1, 3));
2909- fail_unless!(~" " == raw::slice_DBG_UNIQ_bytes(~" abc", 1, 1));
2910- fn a_million_letter_a() -> ~str {
2911- let mut i = 0;
2912- let mut rs = ~" ";
2913- while i < 100000 { push_str(&mut rs, ~" aaaaaaaaaa"); i += 1; }
2914- rs
2915- }
2916- fn half_a_million_letter_a() -> ~str {
2917- let mut i = 0;
2918- let mut rs = ~" ";
2919- while i < 100000 { push_str(&mut rs, ~" aaaaa"); i += 1; }
2920- rs
2921- }
2922- fail_unless!(half_a_million_letter_a() ==
2923- raw::slice_DBG_UNIQ_bytes(a_million_letter_a(), 0u, 500000));
2882+ fail_unless!(" ab" == unsafe {raw::slice_DBG_BRWD_bytes(" abc", 0, 2)});
2883+ fail_unless!(" bc" == unsafe {raw::slice_DBG_BRWD_bytes(" abc", 1, 3)});
2884+ fail_unless!(" " == unsafe {raw::slice_DBG_BRWD_bytes(" abc", 1, 1)});
2885+ fn a_million_letter_a() -> ~str {
2886+ let mut i = 0;
2887+ let mut rs = ~" ";
2888+ while i < 100000 { push_str(&mut rs, " aaaaaaaaaa"); i += 1; }
2889+ rs
29242890 }
2891+ fn half_a_million_letter_a() -> ~str {
2892+ let mut i = 0;
2893+ let mut rs = ~" ";
2894+ while i < 100000 { push_str(&mut rs, " aaaaa"); i += 1; }
2895+ rs
2896+ }
2897+ let letters = a_million_letter_a();
2898+ fail_unless!(half_a_million_letter_a() ==
2899+ unsafe {raw::slice_DBG_BRWD_bytes(letters, 0u, 500000)}.to_owned());
29252900 }
29262901
29272902 #[test]
@@ -3001,50 +2976,51 @@ mod tests {
30012976
30022977 #[test]
30032978 fn test_slice() {
3004- fail_unless!(~ " ab" == slice_DBG_UNIQ(~ " abc", 0, 2));
3005- fail_unless!(~ " bc" == slice_DBG_UNIQ(~ " abc", 1, 3));
3006- fail_unless!(~ " " == slice_DBG_UNIQ(~ " abc", 1, 1));
3007- fail_unless!(~ "\u65e5 " == slice_DBG_UNIQ ( ~ "\u65e5 \u672c ", 0 , 3 ) ) ;
2979+ fail_unless!(" ab" == slice_DBG_BRWD( " abc", 0, 2));
2980+ fail_unless!(" bc" == slice_DBG_BRWD( " abc", 1, 3));
2981+ fail_unless!(" " == slice_DBG_BRWD( " abc", 1, 1));
2982+ fail_unless!("\u65e5 " == slice_DBG_BRWD ( "\u65e5 \u672c " , 0 , 3 ) ) ;
30082983
3009- let data = ~ "ประเทศไทย中华";
3010- fail_unless!( ~ "ป" == slice_DBG_UNIQ ( data, 0 , 3 ) ) ;
3011- fail_unless!( ~ "ร" == slice_DBG_UNIQ ( data, 3 , 6 ) ) ;
3012- fail_unless!( ~ "" == slice_DBG_UNIQ ( data, 3 , 3 ) ) ;
3013- fail_unless!( ~ "华" == slice_DBG_UNIQ ( data, 30 , 33 ) ) ;
2984+ let data = "ประเทศไทย中华";
2985+ fail_unless!( "ป" == slice_DBG_BRWD ( data, 0 , 3 ) ) ;
2986+ fail_unless!( "ร" == slice_DBG_BRWD ( data, 3 , 6 ) ) ;
2987+ fail_unless!( "" == slice_DBG_BRWD ( data, 3 , 3 ) ) ;
2988+ fail_unless!( "华" == slice_DBG_BRWD ( data, 30 , 33 ) ) ;
30142989
30152990 fn a_million_letter_X( ) -> ~str {
30162991 let mut i = 0 ;
30172992 let mut rs = ~"";
30182993 while i < 100000 {
3019- push_str( & mut rs, ~ "华华华华华华华华华华") ;
2994+ push_str( & mut rs, "华华华华华华华华华华") ;
30202995 i += 1 ;
30212996 }
30222997 rs
30232998 }
30242999 fn half_a_million_letter_X( ) -> ~str {
30253000 let mut i = 0 ;
30263001 let mut rs = ~"";
3027- while i < 100000 { push_str( & mut rs, ~ "华华华华华") ; i += 1 ; }
3002+ while i < 100000 { push_str( & mut rs, "华华华华华") ; i += 1 ; }
30283003 rs
30293004 }
3005+ let letters = a_million_letter_X( ) ;
30303006 fail_unless!( half_a_million_letter_X( ) ==
3031- slice_DBG_UNIQ ( a_million_letter_X ( ) , 0 u, 3 u * 500000 u) ) ;
3007+ slice_DBG_BRWD ( letters , 0 u, 3 u * 500000 u) . to_owned ( ) ) ;
30323008 }
30333009
30343010 #[ test]
30353011 fn test_slice_2( ) {
3036- let ss = ~ "中华Việt Nam ";
3012+ let ss = "中华Việt Nam ";
30373013
3038- fail_unless!( ~ "华" == slice_DBG_UNIQ ( ss, 3 u, 6 u) ) ;
3039- fail_unless!( ~ "Việt Nam " == slice_DBG_UNIQ ( ss, 6 u, 16 u) ) ;
3014+ fail_unless!( "华" == slice_DBG_BRWD ( ss, 3 u, 6 u) ) ;
3015+ fail_unless!( "Việt Nam " == slice_DBG_BRWD ( ss, 6 u, 16 u) ) ;
30403016
3041- fail_unless!( ~ "ab" == slice_DBG_UNIQ ( ~ "abc", 0 u, 2 u) ) ;
3042- fail_unless!( ~ "bc" == slice_DBG_UNIQ ( ~ "abc", 1 u, 3 u) ) ;
3043- fail_unless!( ~ "" == slice_DBG_UNIQ ( ~ "abc", 1 u, 1 u) ) ;
3017+ fail_unless!( "ab" == slice_DBG_BRWD ( "abc", 0 u, 2 u) ) ;
3018+ fail_unless!( "bc" == slice_DBG_BRWD ( "abc", 1 u, 3 u) ) ;
3019+ fail_unless!( "" == slice_DBG_BRWD ( "abc", 1 u, 1 u) ) ;
30443020
3045- fail_unless!( ~ "中" == slice_DBG_UNIQ ( ss, 0 u, 3 u) ) ;
3046- fail_unless!( ~ "华V" == slice_DBG_UNIQ ( ss, 3 u, 7 u) ) ;
3047- fail_unless!( ~ "" == slice_DBG_UNIQ ( ss, 3 u, 3 u) ) ;
3021+ fail_unless!( "中" == slice_DBG_BRWD ( ss, 0 u, 3 u) ) ;
3022+ fail_unless!( "华V" == slice_DBG_BRWD ( ss, 3 u, 7 u) ) ;
3023+ fail_unless!( "" == slice_DBG_BRWD ( ss, 3 u, 3 u) ) ;
30483024 /*0: 中
30493025 3: 华
30503026 6: V
@@ -3061,7 +3037,7 @@ mod tests {
30613037 #[ should_fail]
30623038 #[ ignore( cfg( windows) ) ]
30633039 fn test_slice_fail( ) {
3064- slice_DBG_UNIQ ( ~ "中华Việt Nam ", 0 u, 2 u) ;
3040+ slice_DBG_BRWD ( "中华Việt Nam ", 0 u, 2 u) ;
30653041 }
30663042
30673043 #[ test]
0 commit comments