rustlings/src/main.rs

53 lines
1.3 KiB
Rust
Raw Normal View History

2018-05-15 00:13:13 +07:00
#[macro_use]
extern crate quicli;
2018-05-06 23:59:50 +07:00
extern crate ansi_term;
use ansi_term::Color::{Green, Red, Yellow};
2018-05-16 20:30:30 +07: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 23:41:58 +07:00
mod about_variables;
2018-05-06 23:59:50 +07:00
#[derive(Debug, StructOpt)]
struct Cli {
exercise: Option<String>,
}
2018-05-15 00:13:13 +07:00
main!(|args: Cli| if let Some(e) = args.exercise {
println!("selected {}", e);
} else {
2018-05-16 20:27:57 +07:00
println!("Welcome to {}!\n", Yellow.paint("Rustlings"));
2018-05-16 20:23:14 +07:00
about_variables::exec();
2018-05-06 23:59:50 +07:00
});