@@ -1164,7 +1164,6 @@ pub mod traits {
11641164 fn equiv ( & self , other : & S ) -> bool { eq_slice ( * self , other. as_slice ( ) ) }
11651165 }
11661166
1167- #[ cfg( stage0) ]
11681167 impl ops:: Slice < uint , str > for str {
11691168 #[ inline]
11701169 fn as_slice_ < ' a > ( & ' a self ) -> & ' a str {
@@ -1173,39 +1172,17 @@ pub mod traits {
11731172
11741173 #[ inline]
11751174 fn slice_from_ < ' a > ( & ' a self , from : & uint ) -> & ' a str {
1176- super :: slice_from_impl ( & self , * from)
1175+ self . slice_from ( * from)
11771176 }
11781177
11791178 #[ inline]
11801179 fn slice_to_ < ' a > ( & ' a self , to : & uint ) -> & ' a str {
1181- super :: slice_to_impl ( & self , * to)
1180+ self . slice_to ( * to)
11821181 }
11831182
11841183 #[ inline]
11851184 fn slice_ < ' a > ( & ' a self , from : & uint , to : & uint ) -> & ' a str {
1186- super :: slice_impl ( & self , * from, * to)
1187- }
1188- }
1189- #[ cfg( not( stage0) ) ]
1190- impl ops:: Slice < uint , str > for str {
1191- #[ inline]
1192- fn as_slice < ' a > ( & ' a self ) -> & ' a str {
1193- self
1194- }
1195-
1196- #[ inline]
1197- fn slice_from < ' a > ( & ' a self , from : & uint ) -> & ' a str {
1198- super :: slice_from_impl ( & self , * from)
1199- }
1200-
1201- #[ inline]
1202- fn slice_to < ' a > ( & ' a self , to : & uint ) -> & ' a str {
1203- super :: slice_to_impl ( & self , * to)
1204- }
1205-
1206- #[ inline]
1207- fn slice < ' a > ( & ' a self , from : & uint , to : & uint ) -> & ' a str {
1208- super :: slice_impl ( & self , * from, * to)
1185+ self . slice ( * from, * to)
12091186 }
12101187 }
12111188}
@@ -1858,38 +1835,6 @@ fn slice_error_fail(s: &str, begin: uint, end: uint) -> ! {
18581835 begin, end, s) ;
18591836}
18601837
1861- #[ inline]
1862- fn slice_impl < ' a > ( this : & & ' a str , begin : uint , end : uint ) -> & ' a str {
1863- // is_char_boundary checks that the index is in [0, .len()]
1864- if begin <= end &&
1865- this. is_char_boundary ( begin) &&
1866- this. is_char_boundary ( end) {
1867- unsafe { raw:: slice_unchecked ( * this, begin, end) }
1868- } else {
1869- slice_error_fail ( * this, begin, end)
1870- }
1871- }
1872-
1873- #[ inline]
1874- fn slice_from_impl < ' a > ( this : & & ' a str , begin : uint ) -> & ' a str {
1875- // is_char_boundary checks that the index is in [0, .len()]
1876- if this. is_char_boundary ( begin) {
1877- unsafe { raw:: slice_unchecked ( * this, begin, this. len ( ) ) }
1878- } else {
1879- slice_error_fail ( * this, begin, this. len ( ) )
1880- }
1881- }
1882-
1883- #[ inline]
1884- fn slice_to_impl < ' a > ( this : & & ' a str , end : uint ) -> & ' a str {
1885- // is_char_boundary checks that the index is in [0, .len()]
1886- if this. is_char_boundary ( end) {
1887- unsafe { raw:: slice_unchecked ( * this, 0 , end) }
1888- } else {
1889- slice_error_fail ( * this, 0 , end)
1890- }
1891- }
1892-
18931838impl < ' a > StrSlice < ' a > for & ' a str {
18941839 #[ inline]
18951840 fn contains < ' a > ( & self , needle : & ' a str ) -> bool {
@@ -1993,17 +1938,34 @@ impl<'a> StrSlice<'a> for &'a str {
19931938
19941939 #[ inline]
19951940 fn slice ( & self , begin : uint , end : uint ) -> & ' a str {
1996- slice_impl ( self , begin, end)
1941+ // is_char_boundary checks that the index is in [0, .len()]
1942+ if begin <= end &&
1943+ self . is_char_boundary ( begin) &&
1944+ self . is_char_boundary ( end) {
1945+ unsafe { raw:: slice_unchecked ( * self , begin, end) }
1946+ } else {
1947+ slice_error_fail ( * self , begin, end)
1948+ }
19971949 }
19981950
19991951 #[ inline]
20001952 fn slice_from ( & self , begin : uint ) -> & ' a str {
2001- slice_from_impl ( self , begin)
1953+ // is_char_boundary checks that the index is in [0, .len()]
1954+ if self . is_char_boundary ( begin) {
1955+ unsafe { raw:: slice_unchecked ( * self , begin, self . len ( ) ) }
1956+ } else {
1957+ slice_error_fail ( * self , begin, self . len ( ) )
1958+ }
20021959 }
20031960
20041961 #[ inline]
20051962 fn slice_to ( & self , end : uint ) -> & ' a str {
2006- slice_to_impl ( self , end)
1963+ // is_char_boundary checks that the index is in [0, .len()]
1964+ if self . is_char_boundary ( end) {
1965+ unsafe { raw:: slice_unchecked ( * self , 0 , end) }
1966+ } else {
1967+ slice_error_fail ( * self , 0 , end)
1968+ }
20071969 }
20081970
20091971 fn slice_chars ( & self , begin : uint , end : uint ) -> & ' a str {
0 commit comments