From 192be545c18c73f141a67a18bd8da255134d1b29 Mon Sep 17 00:00:00 2001
From: Rowan Torbitzky-Lane <rowan.a.tl@protonmail.com>
Date: Tue, 18 Mar 2025 22:32:29 -0500
Subject: [PATCH] RustRover has a repl :eyes:

---
 flake.nix                 |  1 +
 guessing_game/Cargo.lock  | 49 +++++++++++++++++++++++++++++----------
 guessing_game/src/main.rs | 19 +++++++++++++++
 3 files changed, 57 insertions(+), 12 deletions(-)

diff --git a/flake.nix b/flake.nix
index 9ef24ba..23cfa71 100644
--- a/flake.nix
+++ b/flake.nix
@@ -22,6 +22,7 @@
           clippy
           rust-analyzer
           lldb
+          rust-rover
           (vscode-with-extensions.override {
             vscode = vscodium;
             vscodeExtensions = with vscode-extensions; [
diff --git a/guessing_game/Cargo.lock b/guessing_game/Cargo.lock
index ed2f348..07d4b5e 100644
--- a/guessing_game/Cargo.lock
+++ b/guessing_game/Cargo.lock
@@ -2,6 +2,12 @@
 # It is not intended for manual editing.
 version = 3
 
+[[package]]
+name = "bitflags"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+
 [[package]]
 name = "cfg-if"
 version = "1.0.0"
@@ -10,12 +16,13 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "getrandom"
-version = "0.2.15"
+version = "0.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
 dependencies = [
  "cfg-if",
  "libc",
+ "r-efi",
  "wasi",
 ]
 
@@ -60,21 +67,27 @@ dependencies = [
 ]
 
 [[package]]
-name = "rand"
-version = "0.8.5"
+name = "r-efi"
+version = "5.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+[[package]]
+name = "rand"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
 dependencies = [
- "libc",
  "rand_chacha",
  "rand_core",
+ "zerocopy",
 ]
 
 [[package]]
 name = "rand_chacha"
-version = "0.3.1"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
 dependencies = [
  "ppv-lite86",
  "rand_core",
@@ -82,9 +95,9 @@ dependencies = [
 
 [[package]]
 name = "rand_core"
-version = "0.6.4"
+version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
 dependencies = [
  "getrandom",
 ]
@@ -108,9 +121,21 @@ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
 
 [[package]]
 name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.14.2+wasi-0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags",
+]
 
 [[package]]
 name = "zerocopy"
diff --git a/guessing_game/src/main.rs b/guessing_game/src/main.rs
index 4dcb3cf..0739289 100644
--- a/guessing_game/src/main.rs
+++ b/guessing_game/src/main.rs
@@ -1,8 +1,14 @@
+use rand::Rng;
+use std::cmp::Ordering;
 use std::io;
 
 fn main() {
     println!("Guess the number!");
 
+    // I remember looking this up. Will find the undeprecated calls later.
+    let secret_number = rand::thread_rng().gen_range(1..=100);
+    println!("The secret number is: {}", secret_number);
+
     println!("Please input your guess: ");
 
     // ::new() is an associated type. Function is implemented on this type
@@ -16,5 +22,18 @@ fn main() {
         .read_line(&mut guess)
         .expect("Failed to read line!"); // Use this if truly want to error out. Use pattern matching otherwise
 
+    // Inner programming me screaming rn. This actually isn't all that
+    // bad tho. What's wrong with reusing variable names?
+    // Rust calls it shadowing.
+    let guess: u32 = guess.trim().parse().expect("Please type a number!");
+
     println!("You guessed: {}", guess);
+
+    match guess.cmp(&secret_number) {
+        // pogger matching
+        Ordering::Less => println!("Too Small!"),
+        // -1 => println!("Too Small!"), // Not doable
+        Ordering::Greater => println!("Too big!"),
+        Ordering::Equal => println!("You win!"),
+    }
 }