From a88eef55cd2552cb49d47c274ed080feac649112 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 13 Mar 2013 22:50:02 -0500 Subject: fixes for rust 0.6 --- rosalind/fasta.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'rosalind/fasta.rs') diff --git a/rosalind/fasta.rs b/rosalind/fasta.rs index 9cd80a1..c4c828f 100644 --- a/rosalind/fasta.rs +++ b/rosalind/fasta.rs @@ -4,8 +4,8 @@ use str = core::str; const EOF: char = -1 as char; struct FASTAReader { - in: Reader, - priv mut peeked: char, + in: Reader, + priv peeked: char, } impl FASTAReader { @@ -13,7 +13,7 @@ impl FASTAReader { FASTAReader { in: stdin(), peeked: EOF } } - priv fn read_line(&self) -> ~str { + fn read_line(&mut self) -> ~str { let mut line = self.in.read_line(); if self.peeked != '>' { str::unshift_char(&mut line, self.peeked); @@ -22,7 +22,7 @@ impl FASTAReader { line } - priv fn read_sequence(&self) -> (~str, ~str) { + fn read_sequence(&mut self) -> (~str, ~str) { if self.peeked == EOF { self.peeked = self.in.read_char(); } @@ -36,10 +36,20 @@ impl FASTAReader { (name, dna) } - fn each_sequence(&self, cb: fn(~str, ~str) -> bool) { + pub fn each_sequence(&mut self, cb: &fn(~str, ~str) -> bool) { while !self.in.eof() { let (name, dna) = self.read_sequence(); cb(name, dna); } } + + pub fn sequences(&mut self) -> (~[~str], ~[~str]) { + let mut names = ~[]; + let mut dnas = ~[]; + for self.each_sequence |name, dna| { + names.push(name); + dnas.push(dna); + } + (names, dnas) + } } -- cgit v1.2.3-54-g00ecf