From 4dfc11d74ab02ac5765ae5d08fb750c91f4744b4 Mon Sep 17 00:00:00 2001 From: Hunter Kvalevog Date: Fri, 2 Oct 2026 21:53:51 -0500 Subject: rustlings: move to rust/ --- rustlings/exercises/15_traits/README.md | 19 --------------- rustlings/exercises/15_traits/traits1.rs | 33 -------------------------- rustlings/exercises/15_traits/traits2.rs | 30 ------------------------ rustlings/exercises/15_traits/traits3.rs | 40 -------------------------------- rustlings/exercises/15_traits/traits4.rs | 35 ---------------------------- rustlings/exercises/15_traits/traits5.rs | 39 ------------------------------- 6 files changed, 196 deletions(-) delete mode 100644 rustlings/exercises/15_traits/README.md delete mode 100644 rustlings/exercises/15_traits/traits1.rs delete mode 100644 rustlings/exercises/15_traits/traits2.rs delete mode 100644 rustlings/exercises/15_traits/traits3.rs delete mode 100644 rustlings/exercises/15_traits/traits4.rs delete mode 100644 rustlings/exercises/15_traits/traits5.rs (limited to 'rustlings/exercises/15_traits') diff --git a/rustlings/exercises/15_traits/README.md b/rustlings/exercises/15_traits/README.md deleted file mode 100644 index ac87c64..0000000 --- a/rustlings/exercises/15_traits/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Traits - -A trait is a collection of methods. - -Data types can implement traits. To do so, the methods making up the trait are defined for the data type. For example, the `String` data type implements the `From<&str>` trait. This allows a user to write `String::from("hello")`. - -In this way, traits are somewhat similar to Java interfaces and C++ abstract classes. - -Some additional common Rust traits include: - -- `Clone` (the `clone` method) -- `Display` (which allows formatted display via `{}`) -- `Debug` (which allows formatted display via `{:?}`) - -Because traits indicate shared behavior between data types, they are useful when writing generics. - -## Further information - -- [Traits](https://doc.rust-lang.org/book/ch10-02-traits.html) diff --git a/rustlings/exercises/15_traits/traits1.rs b/rustlings/exercises/15_traits/traits1.rs deleted file mode 100644 index fad6a50..0000000 --- a/rustlings/exercises/15_traits/traits1.rs +++ /dev/null @@ -1,33 +0,0 @@ -// The trait `AppendBar` has only one function which appends "Bar" to any object -// implementing this trait. -trait AppendBar { - fn append_bar(self) -> Self; -} - -impl AppendBar for String { - // TODO: Implement `AppendBar` for the type `String`. - fn append_bar(self) -> Self { - self + "Bar" - } -} - -fn main() { - let s = String::from("Foo"); - let s = s.append_bar(); - println!("s: {s}"); -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn is_foo_bar() { - assert_eq!(String::from("Foo").append_bar(), "FooBar"); - } - - #[test] - fn is_bar_bar() { - assert_eq!(String::from("").append_bar().append_bar(), "BarBar"); - } -} diff --git a/rustlings/exercises/15_traits/traits2.rs b/rustlings/exercises/15_traits/traits2.rs deleted file mode 100644 index 5dfc36d..0000000 --- a/rustlings/exercises/15_traits/traits2.rs +++ /dev/null @@ -1,30 +0,0 @@ -trait AppendBar { - fn append_bar(self) -> Self; -} - -// TODO: Implement the trait `AppendBar` for a vector of strings. -// `append_bar` should push the string "Bar" into the vector. - -impl AppendBar for Vec { - fn append_bar(self) -> Self { - let mut s = self.clone(); - s.push(String::from("Bar")); - s - } -} - -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"); - } -} diff --git a/rustlings/exercises/15_traits/traits3.rs b/rustlings/exercises/15_traits/traits3.rs deleted file mode 100644 index 144ac0a..0000000 --- a/rustlings/exercises/15_traits/traits3.rs +++ /dev/null @@ -1,40 +0,0 @@ -trait Licensed { - // TODO: Add a default implementation for `licensing_info` so that - // implementors like the two structs below can share that default behavior - // without repeating the function. - // The default license information should be the string "Default license". - fn licensing_info(&self) -> String { - String::from("Default license") - } -} - -struct SomeSoftware { - version_number: i32, -} - -struct OtherSoftware { - version_number: String, -} - -impl Licensed for SomeSoftware {} // Don't edit this line. -impl Licensed for OtherSoftware {} // Don't edit this line. - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn is_licensing_info_the_same() { - let licensing_info = "Default license"; - let some_software = SomeSoftware { version_number: 1 }; - let other_software = OtherSoftware { - version_number: "v2.0.0".to_string(), - }; - assert_eq!(some_software.licensing_info(), licensing_info); - assert_eq!(other_software.licensing_info(), licensing_info); - } -} diff --git a/rustlings/exercises/15_traits/traits4.rs b/rustlings/exercises/15_traits/traits4.rs deleted file mode 100644 index b23dcdd..0000000 --- a/rustlings/exercises/15_traits/traits4.rs +++ /dev/null @@ -1,35 +0,0 @@ -trait Licensed { - fn licensing_info(&self) -> String { - "Default license".to_string() - } -} - -struct SomeSoftware; -struct OtherSoftware; - -impl Licensed for SomeSoftware {} -impl Licensed for OtherSoftware {} - -// TODO: Fix the compiler error by only changing the signature of this function. -fn compare_license_types(software1: impl Licensed, software2: impl Licensed) -> bool { - software1.licensing_info() == software2.licensing_info() -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn compare_license_information() { - assert!(compare_license_types(SomeSoftware, OtherSoftware)); - } - - #[test] - fn compare_license_information_backwards() { - assert!(compare_license_types(OtherSoftware, SomeSoftware)); - } -} diff --git a/rustlings/exercises/15_traits/traits5.rs b/rustlings/exercises/15_traits/traits5.rs deleted file mode 100644 index 6548014..0000000 --- a/rustlings/exercises/15_traits/traits5.rs +++ /dev/null @@ -1,39 +0,0 @@ -trait SomeTrait { - fn some_function(&self) -> bool { - true - } -} - -trait OtherTrait { - fn other_function(&self) -> bool { - true - } -} - -struct SomeStruct; -impl SomeTrait for SomeStruct {} -impl OtherTrait for SomeStruct {} - -struct OtherStruct; -impl SomeTrait for OtherStruct {} -impl OtherTrait for OtherStruct {} - -// TODO: Fix the compiler error by only changing the signature of this function. -fn some_func(item: T) -> bool { - item.some_function() && item.other_function() -} - -fn main() { - // You can optionally experiment here. -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_some_func() { - assert!(some_func(SomeStruct)); - assert!(some_func(OtherStruct)); - } -} -- cgit v1.2.3