@@ -85,8 +85,9 @@ impl<'a> Iterator<u8> for AAGen<'a> {
8585
8686fn make_fasta < W : Writer , I : Iterator < u8 > > (
8787 wr : & mut W , header : & str , mut it : I , mut n : uint )
88+ -> std:: io:: IoResult < ( ) >
8889{
89- wr. write ( header. as_bytes ( ) ) ;
90+ try! ( wr. write ( header. as_bytes ( ) ) ) ;
9091 let mut line = [ 0u8 , .. LINE_LENGTH + 1 ] ;
9192 while n > 0 {
9293 let nb = min ( LINE_LENGTH , n) ;
@@ -95,11 +96,12 @@ fn make_fasta<W: Writer, I: Iterator<u8>>(
9596 }
9697 n -= nb;
9798 line[ nb] = '\n' as u8 ;
98- wr. write ( line[ ..nb+1 ] ) ;
99+ try! ( wr. write ( line[ ..nb+1 ] ) ) ;
99100 }
101+ Ok ( ( ) )
100102}
101103
102- fn run < W : Writer > ( writer : & mut W ) {
104+ fn run < W : Writer > ( writer : & mut W ) -> std :: io :: IoResult < ( ) > {
103105 let args = os:: args ( ) ;
104106 let args = args. as_slice ( ) ;
105107 let n = if os:: getenv ( "RUST_BENCH" ) . is_some ( ) {
@@ -129,21 +131,22 @@ fn run<W: Writer>(writer: &mut W) {
129131 ( 'g' , 0.1975473066391 ) ,
130132 ( 't' , 0.3015094502008 ) ] ;
131133
132- make_fasta ( writer, ">ONE Homo sapiens alu\n " ,
133- alu. as_bytes ( ) . iter ( ) . cycle ( ) . map ( |c| * c) , n * 2 ) ;
134- make_fasta ( writer, ">TWO IUB ambiguity codes\n " ,
135- AAGen :: new ( rng, iub) , n * 3 ) ;
136- make_fasta ( writer, ">THREE Homo sapiens frequency\n " ,
137- AAGen :: new ( rng, homosapiens) , n * 5 ) ;
134+ try! ( make_fasta ( writer, ">ONE Homo sapiens alu\n " ,
135+ alu. as_bytes ( ) . iter ( ) . cycle ( ) . map ( |c| * c) , n * 2 ) ) ;
136+ try! ( make_fasta ( writer, ">TWO IUB ambiguity codes\n " ,
137+ AAGen :: new ( rng, iub) , n * 3 ) ) ;
138+ try! ( make_fasta ( writer, ">THREE Homo sapiens frequency\n " ,
139+ AAGen :: new ( rng, homosapiens) , n * 5 ) ) ;
138140
139- writer. flush ( ) ;
141+ writer. flush ( )
140142}
141143
142144fn main ( ) {
143- if os:: getenv ( "RUST_BENCH" ) . is_some ( ) {
145+ let res = if os:: getenv ( "RUST_BENCH" ) . is_some ( ) {
144146 let mut file = BufferedWriter :: new ( File :: create ( & Path :: new ( "./shootout-fasta.data" ) ) ) ;
145- run ( & mut file) ;
147+ run ( & mut file)
146148 } else {
147- run ( & mut io:: stdout ( ) ) ;
148- }
149+ run ( & mut io:: stdout ( ) )
150+ } ;
151+ res. unwrap ( )
149152}
0 commit comments