summaryrefslogtreecommitdiff
path: root/exercises/23_conversions/using_as.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/23_conversions/using_as.rs')
-rw-r--r--exercises/23_conversions/using_as.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/exercises/23_conversions/using_as.rs b/exercises/23_conversions/using_as.rs
new file mode 100644
index 0000000..414cef3
--- /dev/null
+++ b/exercises/23_conversions/using_as.rs
@@ -0,0 +1,33 @@
+// using_as.rs
+//
+// 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.
+//
+// Execute `rustlings hint using_as` or use the `hint` watch subcommand for a
+// hint.
+
+// I AM NOT DONE
+
+fn average(values: &[f64]) -> f64 {
+ let total = values.iter().sum::<f64>();
+ total / values.len()
+}
+
+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);
+ }
+}