OxidisedLeetCode/src/main.rs

47 lines
1.3 KiB
Rust

mod solutions;
mod utils;
use std::{error::Error, time::SystemTime};
use solutions::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let problems: Vec<Box<dyn Solution + Sync>> = vec![
Box::new(valid_parentheses::ValidParentheses {}),
Box::new(merge_sorted_lists::MergeSortedLists {}),
Box::new(longest_substring::LongestSubstring {}),
Box::new(palidromic_number::PalidromicNumber {}),
Box::new(xx::XX {}),
];
let mut t = vec![];
// Run through and generate solutions
for problem in problems.leak() {
let task = tokio::spawn(async { problem.run().unwrap() });
t.push(task);
}
let start_time = SystemTime::now();
let mut problems = vec![];
for thread in t {
problems.push(thread.await?);
}
for problem in problems {
println!("========= Problem {} ==========", problem.id);
println!("Test1 Result: {}", problem.test1);
println!("Test2 Result: {}", problem.test2);
println!("Test3 Result: {}", problem.test3);
println!("========= {}ms =========\n", problem.time.as_millis());
}
println!(
"Ran LeetCode in {}ms",
SystemTime::now().duration_since(start_time)?.as_millis()
);
Ok(())
}