summaryrefslogtreecommitdiff
path: root/exercises/15_traits
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/15_traits')
-rw-r--r--exercises/15_traits/traits5.rs28
1 files changed, 17 insertions, 11 deletions
diff --git a/exercises/15_traits/traits5.rs b/exercises/15_traits/traits5.rs
index 3e62283..5b356ac 100644
--- a/exercises/15_traits/traits5.rs
+++ b/exercises/15_traits/traits5.rs
@@ -1,7 +1,3 @@
-// Your task is to replace the '??' sections so the code compiles.
-//
-// Don't change any line other than the marked one.
-
trait SomeTrait {
fn some_function(&self) -> bool {
true
@@ -14,20 +10,30 @@ trait OtherTrait {
}
}
-struct SomeStruct {}
-struct OtherStruct {}
-
+struct SomeStruct;
impl SomeTrait for SomeStruct {}
impl OtherTrait for SomeStruct {}
+
+struct OtherStruct;
impl SomeTrait for OtherStruct {}
impl OtherTrait for OtherStruct {}
-// YOU MAY ONLY CHANGE THE NEXT LINE
-fn some_func(item: ??) -> bool {
+// TODO: Fix the compiler error by only changing the signature of this function.
+fn some_func(item: ???) -> bool {
item.some_function() && item.other_function()
}
fn main() {
- some_func(SomeStruct {});
- some_func(OtherStruct {});
+ // You can optionally experiment here.
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_some_func() {
+ assert!(some_func(SomeStruct));
+ assert!(some_func(OtherStruct));
+ }
}