Explain.
authorLukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com>
Tue, 14 May 2024 13:54:26 +0000 (15:54 +0200)
committerLukeMathWalker <20745048+LukeMathWalker@users.noreply.github.com>
Tue, 14 May 2024 13:54:26 +0000 (15:54 +0200)
exercises/04_traits/09_assoc_vs_generic/src/lib.rs

index 3cefb78..84f3e7b 100644 (file)
@@ -1,5 +1,17 @@
-// TODO: Define a new trait, `Power`, that has a method `power` that raises `self` to the power of `n`.
-//  The trait definition and its implementations should be enough to get the tests to compile and pass.
+// TODO: Define a new trait, `Power`, that has a method `power` that raises `self`
+//  to the power of `n`.
+//  The trait definition and its implementations should be enough to get
+//  the tests to compile and pass.
+//
+// Recommendation: you may be tempted to write a generic implementation to handle
+// all cases at once. However, this is fairly complicated and requires the use of
+// additional crates (i.e. `num-traits`).
+// Even then, it might be preferable to use a simple macro instead to avoid
+// the complexity of a highly generic implementation. Check out the
+// "Little book of Rust macros" (https://veykril.github.io/tlborm/) if you're
+// interested in learning more about it.
+// You don't have to though: it's perfectly okay to write three separate
+// implementations manually. Venture further only if you're curious.
 
 #[cfg(test)]
 mod tests {