reached lifetimes

This commit is contained in:
Abrar Habib 2023-04-03 21:32:32 -04:00
parent a28274789b
commit b3bf533eb1
10 changed files with 37 additions and 25 deletions

View File

@ -3,14 +3,15 @@
// Execute `rustlings hint generics2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
struct Wrapper {
value: u32,
//<T> is a placeholder for "this can take any type"
struct Wrapper<T> {
value: T,
}
impl Wrapper {
pub fn new(value: u32) -> Self {
impl<T> Wrapper<T> {
pub fn new(value: T) -> Self {
Wrapper { value }
}
}

View File

@ -14,15 +14,16 @@
// Execute `rustlings hint quiz3` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
pub struct ReportCard {
pub grade: f32,
//I don't know what I did but I did it so :)
use std::fmt::Display;
pub struct ReportCard<T> {
pub grade: T,
pub student_name: String,
pub student_age: u8,
}
impl ReportCard {
impl<T: Display> ReportCard<T> {
pub fn print(&self) -> String {
format!("{} ({}) - achieved a grade of {}",
&self.student_name, &self.student_age, &self.grade)
@ -50,7 +51,7 @@ mod tests {
fn generate_alphabetic_report_card() {
// TODO: Make sure to change the grade here after you finish the exercise.
let report_card = ReportCard {
grade: 2.1,
grade: "A+",
student_name: "Gary Plotter".to_string(),
student_age: 11,
};

View File

@ -7,12 +7,11 @@
// pass! Make the test fail!
// Execute `rustlings hint tests1` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
#[cfg(test)]
mod tests {
#[test]
fn you_can_assert() {
assert!();
assert!("Hi" == "Hi");
}
}

View File

@ -3,12 +3,11 @@
// pass! Make the test fail!
// Execute `rustlings hint tests2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
#[cfg(test)]
mod tests {
#[test]
fn you_can_assert_eq() {
assert_eq!();
assert_eq!(String::from("Bue"), "Bue");
}
}

View File

@ -4,7 +4,6 @@
// we expect to get when we call `is_even(5)`.
// Execute `rustlings hint tests3` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
pub fn is_even(num: i32) -> bool {
num % 2 == 0
@ -16,11 +15,11 @@ mod tests {
#[test]
fn is_true_when_even() {
assert!();
assert!(is_even(4));
}
#[test]
fn is_false_when_odd() {
assert!();
assert!(!is_even(5));
}
}

View File

@ -9,7 +9,6 @@
// implementing this trait.
// Execute `rustlings hint traits1` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
trait AppendBar {
fn append_bar(self) -> Self;
@ -17,6 +16,10 @@ trait AppendBar {
impl AppendBar for String {
// TODO: Implement `AppendBar` for type `String`.
fn append_bar(mut self) -> Self {
self.push_str("Bar");
self
}
}
fn main() {

View File

@ -11,7 +11,6 @@
// you can do this!
// Execute `rustlings hint traits2` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
trait AppendBar {
fn append_bar(self) -> Self;
@ -19,6 +18,14 @@ trait AppendBar {
// TODO: Implement trait `AppendBar` for a vector of strings.
impl AppendBar for Vec<String> {
fn append_bar(mut self) -> Self {
self.push(String::from("Bar"));
self
}
}
#[cfg(test)]
mod tests {
use super::*;

View File

@ -7,10 +7,13 @@
// Consider what you can add to the Licensed trait.
// Execute `rustlings hint traits3` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
//You can have default implementations for traits
pub trait Licensed {
fn licensing_info(&self) -> String;
fn licensing_info(&self) -> String{
String::from("Some information")
}
}
struct SomeSoftware {

View File

@ -4,8 +4,9 @@
// Don't change any line other than the marked one.
// Execute `rustlings hint traits4` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
//impl as a function parameter tells the function to accept any type that has the trait implemented
pub trait Licensed {
fn licensing_info(&self) -> String {
"some information".to_string()
@ -20,7 +21,7 @@ impl Licensed for SomeSoftware {}
impl Licensed for OtherSoftware {}
// YOU MAY ONLY CHANGE THE NEXT LINE
fn compare_license_types(software: ??, software_two: ??) -> bool {
fn compare_license_types(software: impl Licensed, software_two: impl Licensed) -> bool {
software.licensing_info() == software_two.licensing_info()
}

View File

@ -4,7 +4,6 @@
// Don't change any line other than the marked one.
// Execute `rustlings hint traits5` or use the `hint` watch subcommand for a hint.
// I AM NOT DONE
pub trait SomeTrait {
fn some_function(&self) -> bool {
@ -27,7 +26,7 @@ impl SomeTrait for OtherStruct {}
impl OtherTrait for OtherStruct {}
// YOU MAY ONLY CHANGE THE NEXT LINE
fn some_func(item: ??) -> bool {
fn some_func(item: impl SomeTrait + OtherTrait) -> bool {
item.some_function() && item.other_function()
}