summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CLI/rust/src/game_of_life.rs1
-rw-r--r--CLI/rust/src/game_of_life/opts.rs9
2 files changed, 10 insertions, 0 deletions
diff --git a/CLI/rust/src/game_of_life.rs b/CLI/rust/src/game_of_life.rs
index c854e7f..4b1e979 100644
--- a/CLI/rust/src/game_of_life.rs
+++ b/CLI/rust/src/game_of_life.rs
@@ -66,6 +66,7 @@ pub(crate) fn options() -> Result<ArgMatches, Error> {
.short('d')
.long("delay")
.default_value("50")
+ .validator(opts::validators::is_positive)
.display_order(6)
)
.get_matches();
diff --git a/CLI/rust/src/game_of_life/opts.rs b/CLI/rust/src/game_of_life/opts.rs
index c0ece98..5e52715 100644
--- a/CLI/rust/src/game_of_life/opts.rs
+++ b/CLI/rust/src/game_of_life/opts.rs
@@ -37,4 +37,13 @@ pub(crate) mod validators {
Err(e) => Err(e.to_string()),
}
}
+
+ /// Validator to check if delay value is positive
+ pub(crate) fn is_positive(val: &str) -> Result<(), String> {
+ match val.parse::<i16>() {
+ Ok(n) if n.is_positive() => Ok(()),
+ Ok(_) => Err(String::from("must be postive value (so far)")),
+ Err(e) => Err(e.to_string()),
+ }
+ }
}