mirror of
https://github.com/ricoriedel/wipe.git
synced 2024-12-22 22:26:41 +00:00
Replace code with macro
This commit is contained in:
parent
d8fdc142e6
commit
4ff02a66fc
59
src/main.rs
59
src/main.rs
@ -35,23 +35,27 @@ mod timer;
|
||||
mod runner;
|
||||
mod choose;
|
||||
|
||||
#[derive(Copy, Clone, ArgEnum)]
|
||||
enum AnimationType {
|
||||
Circle,
|
||||
Rhombus,
|
||||
Rotation
|
||||
}
|
||||
|
||||
impl Options for AnimationType {
|
||||
fn all() -> Vec<Self> where Self: Sized {
|
||||
use AnimationType::*;
|
||||
|
||||
vec![Circle, Rhombus, Rotation]
|
||||
macro_rules! options {
|
||||
($name:ident { $($opt:ident,)* }) => {
|
||||
#[derive(Copy, Clone, ArgEnum)]
|
||||
enum $name {
|
||||
$($opt,)*
|
||||
}
|
||||
impl Options for $name {
|
||||
fn all() -> Vec<Self> {
|
||||
vec![$($name::$opt,)*]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, ArgEnum)]
|
||||
enum ColorType {
|
||||
options!(AnimationType {
|
||||
Circle,
|
||||
Rhombus,
|
||||
Rotation,
|
||||
});
|
||||
|
||||
options!(ColorType {
|
||||
Red,
|
||||
Green,
|
||||
Blue,
|
||||
@ -60,33 +64,16 @@ enum ColorType {
|
||||
LightBlue,
|
||||
Grey,
|
||||
Rainbow,
|
||||
}
|
||||
});
|
||||
|
||||
impl Options for ColorType {
|
||||
fn all() -> Vec<Self> where Self: Sized {
|
||||
use ColorType::*;
|
||||
|
||||
vec![Red, Green, Blue, LightRed, LightGreen, LightBlue, Grey, Rainbow]
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, ArgEnum)]
|
||||
enum FillModeType {
|
||||
options!(FillModeType {
|
||||
Circle,
|
||||
Level,
|
||||
Stripes
|
||||
}
|
||||
|
||||
impl Options for FillModeType {
|
||||
fn all() -> Vec<Self> where Self: Sized {
|
||||
use FillModeType::*;
|
||||
|
||||
vec![Circle, Level]
|
||||
}
|
||||
}
|
||||
Stripes,
|
||||
});
|
||||
|
||||
#[derive(Parser)]
|
||||
#[clap(author = env!("CARGO_PKG_AUTHORS"), version = env!("CARGO_PKG_VERSION"), about = env!("CARGO_PKG_DESCRIPTION"))]
|
||||
#[clap(author = env ! ("CARGO_PKG_AUTHORS"), version = env ! ("CARGO_PKG_VERSION"), about = env ! ("CARGO_PKG_DESCRIPTION"))]
|
||||
struct Args {
|
||||
#[clap(short, long, help = "Add animation", arg_enum)]
|
||||
animation: Vec<AnimationType>,
|
||||
|
Loading…
Reference in New Issue
Block a user