1111// ignore-android see #10393 #13206
1212// ignore-pretty
1313
14- use std:: ascii:: OwnedStrAsciiExt ;
15- use std:: str;
1614use std:: strbuf:: StrBuf ;
1715use std:: slice;
1816
@@ -50,8 +48,7 @@ impl Code {
5048 string. bytes ( ) . fold ( Code ( 0u64 ) , |a, b| a. push_char ( b) )
5149 }
5250
53- // FIXME: Inefficient.
54- fn unpack ( & self , frame : uint ) -> ~str {
51+ fn unpack ( & self , frame : uint ) -> StrBuf {
5552 let mut key = self . hash ( ) ;
5653 let mut result = Vec :: new ( ) ;
5754 for _ in range ( 0 , frame) {
@@ -60,7 +57,7 @@ impl Code {
6057 }
6158
6259 result. reverse ( ) ;
63- str :: from_utf8_owned ( result. move_iter ( ) . collect ( ) ) . unwrap ( )
60+ StrBuf :: from_utf8 ( result) . unwrap ( )
6461 }
6562}
6663
@@ -239,7 +236,7 @@ fn print_frequencies(frequencies: &Table, frame: uint) {
239236
240237 for & ( count, key) in vector. iter ( ) . rev ( ) {
241238 println ! ( "{} {:.3f}" ,
242- key. unpack( frame) ,
239+ key. unpack( frame) . as_slice ( ) ,
243240 ( count as f32 * 100.0 ) / ( total_count as f32 ) ) ;
244241 }
245242 println ! ( "" ) ;
@@ -249,14 +246,17 @@ fn print_occurrences(frequencies: &mut Table, occurrence: &'static str) {
249246 frequencies. lookup ( Code :: pack ( occurrence) , PrintCallback ( occurrence) )
250247}
251248
252- fn get_sequence < R : Buffer > ( r : & mut R , key : & str ) -> ~ [ u8 ] {
253- let mut res = StrBuf :: new ( ) ;
249+ fn get_sequence < R : Buffer > ( r : & mut R , key : & str ) -> Vec < u8 > {
250+ let mut res = Vec :: new ( ) ;
254251 for l in r. lines ( ) . map ( |l| l. ok ( ) . unwrap ( ) )
255252 . skip_while ( |l| key != l. slice_to ( key. len ( ) ) ) . skip ( 1 )
256253 {
257- res. push_str ( l. trim ( ) ) ;
254+ res. push_all ( l. trim ( ) . as_bytes ( ) ) ;
258255 }
259- res. to_owned_str ( ) . into_ascii_upper ( ) . into_bytes ( )
256+ for b in res. mut_iter ( ) {
257+ * b = b. to_ascii ( ) . to_upper ( ) . to_byte ( ) ;
258+ }
259+ res
260260}
261261
262262fn main ( ) {
@@ -268,17 +268,17 @@ fn main() {
268268 } ;
269269
270270 let mut frequencies = Table :: new ( ) ;
271- generate_frequencies ( & mut frequencies, input, 1 ) ;
271+ generate_frequencies ( & mut frequencies, input. as_slice ( ) , 1 ) ;
272272 print_frequencies ( & frequencies, 1 ) ;
273273
274274 frequencies = Table :: new ( ) ;
275- generate_frequencies ( & mut frequencies, input, 2 ) ;
275+ generate_frequencies ( & mut frequencies, input. as_slice ( ) , 2 ) ;
276276 print_frequencies ( & frequencies, 2 ) ;
277277
278278 for occurrence in OCCURRENCES . iter ( ) {
279279 frequencies = Table :: new ( ) ;
280280 generate_frequencies ( & mut frequencies,
281- input,
281+ input. as_slice ( ) ,
282282 occurrence. len ( ) ) ;
283283 print_occurrences ( & mut frequencies, * occurrence) ;
284284 }
0 commit comments