diff --git a/src/main.rs b/src/main.rs index 6ae12a5..32fe0c8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,13 +16,11 @@ * along with this program. If not, see . */ -use std::cell::RefCell; use std::collections::VecDeque; use std::fs::File; use std::io::{BufRead, BufReader}; use std::path::PathBuf; use std::process; -use std::rc::Rc; use structopt::StructOpt; mod candidate; @@ -47,13 +45,13 @@ struct Opt { fn main() { let opts = Opt::from_args(); - let prime_list = Rc::new(RefCell::new(VecDeque::::new())); + let mut prime_list = VecDeque::::new(); if opts.import.is_some() { let in_file = File::open(opts.import.unwrap()).unwrap(); let reader = BufReader::new(in_file); for p in reader.lines().into_iter() { - prime_list.borrow_mut().push_back(p.unwrap().parse().unwrap()); + prime_list.push_back(p.unwrap().parse().unwrap()); } } @@ -62,20 +60,20 @@ fn main() { process::exit(1); } - if opts.test && *prime_list.borrow().back().unwrap_or(&0) >= opts.num { - for i in prime_list.borrow().iter() { + if opts.test && *prime_list.back().unwrap_or(&0) >= opts.num { + for i in prime_list.iter() { if *i == opts.num { process::exit(0) } } process::exit(1) - } else if !opts.test && prime_list.borrow().len() >= opts.num as usize { - let res = *prime_list.borrow().get(opts.num as usize).unwrap(); + } else if !opts.test && prime_list.len() >= opts.num as usize { + let res = *prime_list.get(opts.num as usize).unwrap(); println!("{}", res); } else { let mut cand_gen = CandidateGenerator::new(); - if !prime_list.borrow().is_empty() { - cand_gen.calc_base(*prime_list.borrow().back().unwrap()); + if !prime_list.is_empty() { + cand_gen.calc_base(*prime_list.back().unwrap()); } loop { @@ -85,7 +83,7 @@ fn main() { } let mut is_prime = true; - for p in prime_list.borrow().iter() { + for p in prime_list.iter() { if cand % *p == 0 { is_prime = false; break; @@ -93,25 +91,25 @@ fn main() { } if is_prime { - prime_list.borrow_mut().push_back(cand); + prime_list.push_back(cand); if opts.verbose { println!("{}", cand); } - if !opts.test && prime_list.borrow().len() == opts.num as usize { + if !opts.test && prime_list.len() == opts.num as usize { break; } } } if opts.test { - if *prime_list.borrow().back().unwrap() == opts.num { + if *prime_list.back().unwrap() == opts.num { process::exit(0) } else { process::exit(1) } } else if !opts.verbose { - let last_prime = *prime_list.borrow().back().unwrap(); + let last_prime = *prime_list.back().unwrap(); println!("{}", last_prime); } }