summaryrefslogtreecommitdiff
path: root/solutions/23_conversions/using_as.rs
diff options
context:
space:
mode:
Diffstat (limited to 'solutions/23_conversions/using_as.rs')
-rw-r--r--solutions/23_conversions/using_as.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/solutions/23_conversions/using_as.rs b/solutions/23_conversions/using_as.rs
new file mode 100644
index 0000000..14b92eb
--- /dev/null
+++ b/solutions/23_conversions/using_as.rs
@@ -0,0 +1,24 @@
+// 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);
+ }
+}