From 2ff4f42d43c26671fe8fb22366122d8f722f2864 Mon Sep 17 00:00:00 2001 From: Alexander Launi Date: Sat, 21 Mar 2020 16:41:02 -0400 Subject: [PATCH] Implement countdown using generic mathematics --- 03_recursion/rust/01_countdown/Cargo.toml | 1 + 03_recursion/rust/01_countdown/src/main.rs | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/03_recursion/rust/01_countdown/Cargo.toml b/03_recursion/rust/01_countdown/Cargo.toml index 076bdcd..9d582e3 100644 --- a/03_recursion/rust/01_countdown/Cargo.toml +++ b/03_recursion/rust/01_countdown/Cargo.toml @@ -7,3 +7,4 @@ edition = "2018" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +num-traits = "0.2" \ No newline at end of file diff --git a/03_recursion/rust/01_countdown/src/main.rs b/03_recursion/rust/01_countdown/src/main.rs index 2fdb117..84ae0e7 100644 --- a/03_recursion/rust/01_countdown/src/main.rs +++ b/03_recursion/rust/01_countdown/src/main.rs @@ -1,10 +1,15 @@ -fn countdown(i: u32) { +use std::ops::Sub; +use std::fmt::Display; +use num_traits::identities::One; +use num_traits::identities::Zero; + +fn countdown>(i: T) { println!("{}", i); - if i == 0 { + if i.is_zero() { return } - countdown(i - 1); + countdown(i - T::one()); } fn main() {