summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-07-01 21:41:22 +0200
committermo8it <mo8it@proton.me>2024-07-01 21:41:22 +0200
commit428d64ffa01415826e421e00f59f63a77884b923 (patch)
tree2c499a59a8a7eaa72d4d5a615d74ae5740525f1f
parent09c94bef2dbaf44daf81d8f618289c9425d1f90f (diff)
using_as solution
-rw-r--r--exercises/23_conversions/using_as.rs10
-rw-r--r--solutions/23_conversions/using_as.rs25
2 files changed, 28 insertions, 7 deletions
diff --git a/exercises/23_conversions/using_as.rs b/exercises/23_conversions/using_as.rs
index 94b1bb3..c131d1f 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 4e18198..14b92eb 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);
+ }
+}