summaryrefslogtreecommitdiff
path: root/rust/rustlings/exercises/22_clippy
diff options
context:
space:
mode:
Diffstat (limited to 'rust/rustlings/exercises/22_clippy')
-rw-r--r--rust/rustlings/exercises/22_clippy/README.md10
-rw-r--r--rust/rustlings/exercises/22_clippy/clippy1.rs15
-rw-r--r--rust/rustlings/exercises/22_clippy/clippy2.rs10
-rw-r--r--rust/rustlings/exercises/22_clippy/clippy3.rs29
4 files changed, 64 insertions, 0 deletions
diff --git a/rust/rustlings/exercises/22_clippy/README.md b/rust/rustlings/exercises/22_clippy/README.md
new file mode 100644
index 0000000..55438af
--- /dev/null
+++ b/rust/rustlings/exercises/22_clippy/README.md
@@ -0,0 +1,10 @@
+# Clippy
+
+The Clippy tool is a collection of lints to analyze your code so you can catch common mistakes and improve your Rust code.
+
+If you used the installation script for Rustlings, Clippy should be already installed.
+If not you can install it manually via `rustup component add clippy`.
+
+## Further information
+
+- [GitHub Repository](https://github.com/rust-lang/rust-clippy).
diff --git a/rust/rustlings/exercises/22_clippy/clippy1.rs b/rust/rustlings/exercises/22_clippy/clippy1.rs
new file mode 100644
index 0000000..7165da4
--- /dev/null
+++ b/rust/rustlings/exercises/22_clippy/clippy1.rs
@@ -0,0 +1,15 @@
+// The Clippy tool is a collection of lints to analyze your code so you can
+// catch common mistakes and improve your Rust code.
+//
+// For these exercises, the code will fail to compile when there are Clippy
+// warnings. Check Clippy's suggestions from the output to solve the exercise.
+
+fn main() {
+ // TODO: Fix the Clippy lint in this line.
+ let pi = 3.14;
+ let radius: f32 = 5.0;
+
+ let area = pi * radius.powi(2);
+
+ println!("The area of a circle with radius {radius:.2} is {area:.5}");
+}
diff --git a/rust/rustlings/exercises/22_clippy/clippy2.rs b/rust/rustlings/exercises/22_clippy/clippy2.rs
new file mode 100644
index 0000000..8cfe6f8
--- /dev/null
+++ b/rust/rustlings/exercises/22_clippy/clippy2.rs
@@ -0,0 +1,10 @@
+fn main() {
+ let mut res = 42;
+ let option = Some(12);
+ // TODO: Fix the Clippy lint.
+ for x in option {
+ res += x;
+ }
+
+ println!("{res}");
+}
diff --git a/rust/rustlings/exercises/22_clippy/clippy3.rs b/rust/rustlings/exercises/22_clippy/clippy3.rs
new file mode 100644
index 0000000..7a3cb39
--- /dev/null
+++ b/rust/rustlings/exercises/22_clippy/clippy3.rs
@@ -0,0 +1,29 @@
+// Here are some more easy Clippy fixes so you can see its utility 📎
+// TODO: Fix all the Clippy lints.
+
+#[rustfmt::skip]
+#[allow(unused_variables, unused_assignments)]
+fn main() {
+ let my_option: Option<&str> = None;
+ // Assume that you don't know the value of `my_option`.
+ // In the case of `Some`, we want to print its value.
+ if my_option.is_none() {
+ println!("{}", my_option.unwrap());
+ }
+
+ let my_arr = &[
+ -1, -2, -3
+ -4, -5, -6
+ ];
+ println!("My array! Here it is: {my_arr:?}");
+
+ let my_empty_vec = vec![1, 2, 3, 4, 5].resize(0, 5);
+ println!("This Vec is empty, see? {my_empty_vec:?}");
+
+ let mut value_a = 45;
+ let mut value_b = 66;
+ // Let's swap these two!
+ value_a = value_b;
+ value_b = value_a;
+ println!("value a: {value_a}; value b: {value_b}");
+}