From 428d64ffa01415826e421e00f59f63a77884b923 Mon Sep 17 00:00:00 2001
From: mo8it <mo8it@proton.me>
Date: Mon, 1 Jul 2024 21:41:22 +0200
Subject: [PATCH] using_as solution

---
 exercises/23_conversions/using_as.rs | 10 ++++------
 solutions/23_conversions/using_as.rs | 25 ++++++++++++++++++++++++-
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/exercises/23_conversions/using_as.rs b/exercises/23_conversions/using_as.rs
index 94b1bb31..c131d1f3 100644
--- a/exercises/23_conversions/using_as.rs
+++ b/exercises/23_conversions/using_as.rs
@@ -1,12 +1,10 @@
-// Type casting in Rust is done via the usage of the `as` operator. Please note
-// that the `as` operator is not only used when type casting. It also helps with
-// renaming imports.
-//
-// The goal is to make sure that the division does not fail to compile and
-// returns the proper type.
+// Type casting in Rust is done via the usage of the `as` operator.
+// Note that the `as` operator is not only used when type casting. It also helps
+// with renaming imports.
 
 fn average(values: &[f64]) -> f64 {
     let total = values.iter().sum::<f64>();
+    // TODO: Make a conversion before dividing.
     total / values.len()
 }
 
diff --git a/solutions/23_conversions/using_as.rs b/solutions/23_conversions/using_as.rs
index 4e181989..14b92ebf 100644
--- a/solutions/23_conversions/using_as.rs
+++ b/solutions/23_conversions/using_as.rs
@@ -1 +1,24 @@
-// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
+// Type casting in Rust is done via the usage of the `as` operator.
+// Note that the `as` operator is not only used when type casting. It also helps
+// with renaming imports.
+
+fn average(values: &[f64]) -> f64 {
+    let total = values.iter().sum::<f64>();
+    total / values.len() as f64
+    //                   ^^^^^^
+}
+
+fn main() {
+    let values = [3.5, 0.3, 13.0, 11.7];
+    println!("{}", average(&values));
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn returns_proper_type_and_value() {
+        assert_eq!(average(&[3.5, 0.3, 13.0, 11.7]), 7.125);
+    }
+}