rustlings/src/main.rs

53 lines
1.3 KiB
Rust
Raw Normal View History

2018-05-14 13:13:13 -04:00
#[macro_use]
extern crate quicli;
2018-05-06 12:59:50 -04:00
extern crate ansi_term;
use ansi_term::Color::{Green, Red, Yellow};
2018-05-16 09:30:30 -04:00
use quicli::prelude::*;
use std::fmt::Display;
pub fn verify<T: PartialEq + Display>(left: T, right: T) {
if left == right {
println!("{} {} == {}", Green.bold().paint("PASS"), left, right);
} else {
println!(
"{} You submitted {}, but that's not correct!",
Red.bold().paint("FAIL"),
left
);
println!(" Please correct your code to make this test pass!");
}
}
pub fn verify_easy<T: PartialEq + Display>(left: T, right: T) {
if left == right {
println!("{} {} == {}", Green.bold().paint("PASS"), left, right);
} else {
println!(
"{} You submitted {}, but that's not correct!",
Red.bold().paint("FAIL"),
left
);
println!(" Expected: {}", right);
println!(" Please correct your code to make this test pass!");
}
}
pub fn title(s: &str) {
println!("{} {}", Yellow.bold().paint("RUN"), s);
}
2018-05-14 12:41:58 -04:00
mod about_variables;
2018-05-06 12:59:50 -04:00
#[derive(Debug, StructOpt)]
struct Cli {
exercise: Option<String>,
}
2018-05-14 13:13:13 -04:00
main!(|args: Cli| if let Some(e) = args.exercise {
println!("selected {}", e);
} else {
2018-05-16 09:27:57 -04:00
println!("Welcome to {}!\n", Yellow.paint("Rustlings"));
2018-05-16 09:23:14 -04:00
about_variables::exec();
2018-05-06 12:59:50 -04:00
});