mirror of
https://git.aramjonghu.dev/AramJonghu/rustlings.git
synced 2026-09-12 12:33:29 +02:00
feat: traits done
This commit is contained in:
@@ -6,6 +6,9 @@ trait AppendBar {
|
|||||||
|
|
||||||
impl AppendBar for String {
|
impl AppendBar for String {
|
||||||
// TODO: Implement `AppendBar` for the type `String`.
|
// TODO: Implement `AppendBar` for the type `String`.
|
||||||
|
fn append_bar(self) -> Self {
|
||||||
|
self + &String::from("Bar")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|||||||
@@ -4,6 +4,12 @@ trait AppendBar {
|
|||||||
|
|
||||||
// TODO: Implement the trait `AppendBar` for a vector of strings.
|
// TODO: Implement the trait `AppendBar` for a vector of strings.
|
||||||
// `append_bar` should push the string "Bar" into the vector.
|
// `append_bar` should push the string "Bar" into the vector.
|
||||||
|
impl AppendBar for Vec<String> {
|
||||||
|
fn append_bar(mut self) -> Self {
|
||||||
|
self.push(String::from("Bar"));
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// You can optionally experiment here.
|
// You can optionally experiment here.
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ trait Licensed {
|
|||||||
// implementors like the two structs below can share that default behavior
|
// implementors like the two structs below can share that default behavior
|
||||||
// without repeating the function.
|
// without repeating the function.
|
||||||
// The default license information should be the string "Default license".
|
// The default license information should be the string "Default license".
|
||||||
fn licensing_info(&self) -> String;
|
fn licensing_info(&self) -> String {
|
||||||
|
String::from("Default license")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SomeSoftware {
|
struct SomeSoftware {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ impl Licensed for SomeSoftware {}
|
|||||||
impl Licensed for OtherSoftware {}
|
impl Licensed for OtherSoftware {}
|
||||||
|
|
||||||
// TODO: Fix the compiler error by only changing the signature of this function.
|
// TODO: Fix the compiler error by only changing the signature of this function.
|
||||||
fn compare_license_types(software1: ???, software2: ???) -> bool {
|
fn compare_license_types(software1: impl Licensed, software2: impl Licensed) -> bool {
|
||||||
software1.licensing_info() == software2.licensing_info()
|
software1.licensing_info() == software2.licensing_info()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ impl SomeTrait for OtherStruct {}
|
|||||||
impl OtherTrait for OtherStruct {}
|
impl OtherTrait for OtherStruct {}
|
||||||
|
|
||||||
// TODO: Fix the compiler error by only changing the signature of this function.
|
// TODO: Fix the compiler error by only changing the signature of this function.
|
||||||
fn some_func(item: ???) -> bool {
|
fn some_func(item: impl SomeTrait + OtherTrait) -> bool {
|
||||||
item.some_function() && item.other_function()
|
item.some_function() && item.other_function()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user