3838// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
3939// OF THE POSSIBILITY OF SUCH DAMAGE.
4040
41- #![ feature( core, old_io, io, core) ]
42-
4341use std:: cmp:: min;
44- use std:: old_io:: * ;
45- use std:: iter:: repeat;
4642use std:: env;
47- use std:: slice:: bytes:: copy_memory;
43+ use std:: io;
44+ use std:: io:: prelude:: * ;
45+ use std:: iter:: repeat;
4846
4947const LINE_LEN : usize = 60 ;
5048const LOOKUP_SIZE : usize = 4 * 1024 ;
@@ -116,27 +114,31 @@ struct RepeatFasta<'a, W:'a> {
116114 out : & ' a mut W
117115}
118116
119- impl < ' a , W : Writer > RepeatFasta < ' a , W > {
117+ impl < ' a , W : Write > RepeatFasta < ' a , W > {
120118 fn new ( alu : & ' static str , w : & ' a mut W ) -> RepeatFasta < ' a , W > {
121119 RepeatFasta { alu : alu, out : w }
122120 }
123121
124- fn make ( & mut self , n : usize ) -> IoResult < ( ) > {
122+ fn make ( & mut self , n : usize ) -> io :: Result < ( ) > {
125123 let alu_len = self . alu . len ( ) ;
126124 let mut buf = repeat ( 0 ) . take ( alu_len + LINE_LEN ) . collect :: < Vec < _ > > ( ) ;
127125 let alu: & [ u8 ] = self . alu . as_bytes ( ) ;
128126
129- copy_memory ( alu, & mut buf) ;
127+ for ( slot, val) in buf. iter_mut ( ) . zip ( alu. iter ( ) ) {
128+ * slot = * val;
129+ }
130130 let buf_len = buf. len ( ) ;
131- copy_memory ( & alu[ ..LINE_LEN ] , & mut buf[ alu_len..buf_len] ) ;
131+ for ( slot, val) in buf[ alu_len..buf_len] . iter_mut ( ) . zip ( alu[ ..LINE_LEN ] . iter ( ) ) {
132+ * slot = * val;
133+ }
132134
133135 let mut pos = 0 ;
134136 let mut bytes;
135137 let mut n = n;
136138 while n > 0 {
137139 bytes = min ( LINE_LEN , n) ;
138- try!( self . out . write ( & buf[ pos..pos + bytes] ) ) ;
139- try!( self . out . write_u8 ( '\n' as u8 ) ) ;
140+ try!( self . out . write_all ( & buf[ pos..pos + bytes] ) ) ;
141+ try!( self . out . write_all ( & [ b '\n'] ) ) ;
140142 pos += bytes;
141143 if pos > alu_len {
142144 pos -= alu_len;
@@ -165,7 +167,7 @@ struct RandomFasta<'a, W:'a> {
165167 out : & ' a mut W ,
166168}
167169
168- impl < ' a , W : Writer > RandomFasta < ' a , W > {
170+ impl < ' a , W : Write > RandomFasta < ' a , W > {
169171 fn new ( w : & ' a mut W , a : & [ AminoAcid ] ) -> RandomFasta < ' a , W > {
170172 RandomFasta {
171173 seed : 42 ,
@@ -189,7 +191,7 @@ impl<'a, W: Writer> RandomFasta<'a, W> {
189191 0
190192 }
191193
192- fn make ( & mut self , n : usize ) -> IoResult < ( ) > {
194+ fn make ( & mut self , n : usize ) -> io :: Result < ( ) > {
193195 let lines = n / LINE_LEN ;
194196 let chars_left = n % LINE_LEN ;
195197 let mut buf = [ 0 ; LINE_LEN + 1 ] ;
@@ -204,7 +206,7 @@ impl<'a, W: Writer> RandomFasta<'a, W> {
204206 for i in 0 ..chars_left {
205207 buf[ i] = self . nextc ( ) ;
206208 }
207- self . out . write ( & buf[ ..chars_left] )
209+ self . out . write_all ( & buf[ ..chars_left] )
208210 }
209211}
210212
@@ -216,23 +218,23 @@ fn main() {
216218 5
217219 } ;
218220
219- let mut out = stdout ( ) ;
221+ let mut out = io :: stdout ( ) ;
220222
221- out. write_line ( ">ONE Homo sapiens alu" ) . unwrap ( ) ;
223+ out. write_all ( b ">ONE Homo sapiens alu\n ") . unwrap ( ) ;
222224 {
223225 let mut repeat = RepeatFasta :: new ( ALU , & mut out) ;
224226 repeat. make ( n * 2 ) . unwrap ( ) ;
225227 }
226228
227- out. write_line ( ">TWO IUB ambiguity codes" ) . unwrap ( ) ;
229+ out. write_all ( b ">TWO IUB ambiguity codes\n ") . unwrap ( ) ;
228230 let iub = sum_and_scale ( & IUB ) ;
229231 let mut random = RandomFasta :: new ( & mut out, & iub) ;
230232 random. make ( n * 3 ) . unwrap ( ) ;
231233
232- random. out . write_line ( ">THREE Homo sapiens frequency" ) . unwrap ( ) ;
234+ random. out . write_all ( b ">THREE Homo sapiens frequency\n ") . unwrap ( ) ;
233235 let homo_sapiens = sum_and_scale ( & HOMO_SAPIENS ) ;
234236 random. lookup = make_lookup ( & homo_sapiens) ;
235237 random. make ( n * 5 ) . unwrap ( ) ;
236238
237- random. out . write_str ( "\n " ) . unwrap ( ) ;
239+ random. out . write_all ( b "\n ") . unwrap ( ) ;
238240}
0 commit comments