summaryrefslogtreecommitdiff
path: root/solutions
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-06-27 11:58:44 +0200
committermo8it <mo8it@proton.me>2024-06-27 11:58:44 +0200
commit091e1e7f7a1afad539479674e06cae7c8d8dab7f (patch)
treef458802a4457f5d27252bde62792018a25eda255 /solutions
parent92f249a52ca993d65db6ed70b85535c2f1720ec3 (diff)
traits2 solution
Diffstat (limited to 'solutions')
-rw-r--r--solutions/15_traits/traits2.rs28
1 files changed, 27 insertions, 1 deletions
diff --git a/solutions/15_traits/traits2.rs b/solutions/15_traits/traits2.rs
index 4e18198..0db93e0 100644
--- a/solutions/15_traits/traits2.rs
+++ b/solutions/15_traits/traits2.rs
@@ -1 +1,27 @@
-// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
+trait AppendBar {
+ fn append_bar(self) -> Self;
+}
+
+impl AppendBar for Vec<String> {
+ fn append_bar(mut self) -> Self {
+ // ^^^ this is important
+ self.push(String::from("Bar"));
+ self
+ }
+}
+
+fn main() {
+ // You can optionally experiment here.
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn is_vec_pop_eq_bar() {
+ let mut foo = vec![String::from("Foo")].append_bar();
+ assert_eq!(foo.pop().unwrap(), "Bar");
+ assert_eq!(foo.pop().unwrap(), "Foo");
+ }
+}