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 --- DNA.rs | 4 ++-- GC.rs | 2 +- GRPH.rs | 4 ++-- HAMM.rs | 2 +- RNA.rs | 2 +- rosalind/dna.rs | 10 +++++----- rosalind/fasta.rs | 20 +++++++++++++++----- rosalind/mod.rc | 9 --------- rosalind/mod.rs | 9 +++++++++ rosalind/protein.rs | 6 +++--- 10 files changed, 39 insertions(+), 29 deletions(-) delete mode 100644 rosalind/mod.rc create mode 100644 rosalind/mod.rs diff --git a/DNA.rs b/DNA.rs index 12e60d7..f335645 100644 --- a/DNA.rs +++ b/DNA.rs @@ -9,7 +9,7 @@ fn count_nucleotides(dna: &str) -> (int, int, int, int) { 'C' => c += 1, 'G' => g += 1, 'T' => t += 1, - _ => fail ~"Unexpected character found" + _ => fail!(~"Unexpected character found"), } } (a, c, g, t) @@ -23,7 +23,7 @@ fn count_nucleotides_2(dna: &str) -> (int, int, int, int) { 'C' => (a, c + 1, g, t), 'G' => (a, c, g + 1, t), 'T' => (a, c, g, t + 1), - _ => fail ~"Unexpected character found" + _ => fail!(~"Unexpected character found"), } } } diff --git a/GC.rs b/GC.rs index 11f18b3..4560366 100644 --- a/GC.rs +++ b/GC.rs @@ -3,7 +3,7 @@ use rosalind::dna::gc_content; use rosalind::fasta::FASTAReader; fn main() { - let reader = FASTAReader::new(); + let mut reader = FASTAReader::new(); let mut (max_name, max_gc) = (~"", -1f); for reader.each_sequence |name, dna| { let gc_content = gc_content(dna); diff --git a/GRPH.rs b/GRPH.rs index 867aade..e98e2c8 100644 --- a/GRPH.rs +++ b/GRPH.rs @@ -1,11 +1,11 @@ -use str::{len,view}; +use core::str::{len,view}; extern mod rosalind; use rosalind::fasta::FASTAReader; fn main() { let mut dna: ~[(~str, ~str)] = ~[]; - let reader = FASTAReader::new(); + let mut reader = FASTAReader::new(); for reader.each_sequence |cur_name, cur_seq| { let cur_len = len(cur_seq); for dna.each |&(prev_name, prev_seq)| { diff --git a/HAMM.rs b/HAMM.rs index a1b2afe..7cea27d 100644 --- a/HAMM.rs +++ b/HAMM.rs @@ -5,7 +5,7 @@ use rosalind::str::hamming; fn main() { let dna1 = input_line(); let dna2 = input_line(); - assert str::len(dna1) == str::len(dna2); + fail_unless!(str::len(dna1) == str::len(dna2)); io::println(fmt!("%d", hamming(dna1, dna2))); } diff --git a/RNA.rs b/RNA.rs index 9c20887..228dafc 100644 --- a/RNA.rs +++ b/RNA.rs @@ -1,4 +1,4 @@ -use io::{stdin,stdout,ReaderUtil,WriterUtil}; +use core::io::{stdin,stdout,ReaderUtil,WriterUtil}; extern mod rosalind; use rosalind::dna::transcribe; diff --git a/rosalind/dna.rs b/rosalind/dna.rs index 7279c36..beb19a5 100644 --- a/rosalind/dna.rs +++ b/rosalind/dna.rs @@ -1,6 +1,6 @@ use str = core::str; -pure fn gc_content(dna: &str) -> float { +fn gc_content(dna: &str) -> float { let mut content = 0; for str::each_char(dna) |ch| { match ch { @@ -11,20 +11,20 @@ pure fn gc_content(dna: &str) -> float { (content as float) / (str::len(dna) as float) } -pure fn complement(base: char) -> char { +fn complement(base: char) -> char { match base { 'A' => 'T', 'C' => 'G', 'G' => 'C', 'T' => 'A', - _ => fail ~"Unknown character found", + _ => fail!(~"Unknown character found"), } } -pure fn transcribe(base: char) -> char { +fn transcribe(base: char) -> char { match base { 'T' => 'U', 'A' | 'C' | 'G' => base, - _ => fail ~"Unknown character found", + _ => fail!(~"Unknown character found"), } } 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) + } } diff --git a/rosalind/mod.rc b/rosalind/mod.rc deleted file mode 100644 index 99fa08f..0000000 --- a/rosalind/mod.rc +++ /dev/null @@ -1,9 +0,0 @@ -#[link(name = "rosalind", vers = "0.0.1", author = "doy")]; - -#[crate_type = "lib"]; - -mod dna; -mod fasta; -mod protein; -mod io; -mod str; diff --git a/rosalind/mod.rs b/rosalind/mod.rs new file mode 100644 index 0000000..3d19392 --- /dev/null +++ b/rosalind/mod.rs @@ -0,0 +1,9 @@ +#[link(name = "rosalind", vers = "0.0.1", author = "doy")]; + +#[crate_type = "lib"]; + +pub mod dna; +pub mod fasta; +pub mod protein; +pub mod io; +pub mod str; diff --git a/rosalind/protein.rs b/rosalind/protein.rs index 815b9c0..d1534bf 100644 --- a/rosalind/protein.rs +++ b/rosalind/protein.rs @@ -3,7 +3,7 @@ use str = core::str; const STOP: char = -1 as char; fn translate(rna: &str) -> ~str { - assert str::len(rna) % 3 == 0; + fail_unless!(str::len(rna) % 3 == 0); let codons = str::len(rna) / 3; let mut protein = str::with_capacity(codons); @@ -21,7 +21,7 @@ fn translate(rna: &str) -> ~str { } priv fn translate_single(codon: &str) -> char { - assert str::len(codon) == 3; + fail_unless!(str::len(codon) == 3); match codon { "UUU" => 'F', "CUU" => 'L', "AUU" => 'I', "GUU" => 'V', "UUC" => 'F', "CUC" => 'L', "AUC" => 'I', "GUC" => 'V', @@ -39,6 +39,6 @@ priv fn translate_single(codon: &str) -> char { "UGC" => 'C', "CGC" => 'R', "AGC" => 'S', "GGC" => 'G', "UGA" => STOP, "CGA" => 'R', "AGA" => 'R', "GGA" => 'G', "UGG" => 'W', "CGG" => 'R', "AGG" => 'R', "GGG" => 'G', - _ => fail ~"Unknown codon", + _ => fail!(~"Unknown codon"), } } -- cgit v1.2.3