summaryrefslogtreecommitdiff
path: root/rustlings/solutions/quizzes/quiz3.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rustlings/solutions/quizzes/quiz3.rs')
-rw-r--r--rustlings/solutions/quizzes/quiz3.rs65
1 files changed, 0 insertions, 65 deletions
diff --git a/rustlings/solutions/quizzes/quiz3.rs b/rustlings/solutions/quizzes/quiz3.rs
deleted file mode 100644
index 7b91278..0000000
--- a/rustlings/solutions/quizzes/quiz3.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-// An imaginary magical school has a new report card generation system written
-// in Rust! Currently, the system only supports creating report cards where the
-// student's grade is represented numerically (e.g. 1.0 -> 5.5). However, the
-// school also issues alphabetical grades (A+ -> F-) and needs to be able to
-// print both types of report card!
-//
-// Make the necessary code changes in the struct `ReportCard` and the impl
-// block to support alphabetical report cards in addition to numerical ones.
-
-use std::fmt::Display;
-
-// Make the struct generic over `T`.
-struct ReportCard<T> {
- // ^^^
- grade: T,
- // ^
- student_name: String,
- student_age: u8,
-}
-
-// To be able to print the grade, it has to implement the `Display` trait.
-impl<T: Display> ReportCard<T> {
- // ^^^^^^^ require that `T` implements `Display`.
- fn print(&self) -> String {
- format!(
- "{} ({}) - achieved a grade of {}",
- &self.student_name, &self.student_age, &self.grade,
- )
- }
-}
-
-fn main() {
- // You can optionally experiment here.
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn generate_numeric_report_card() {
- let report_card = ReportCard {
- grade: 2.1,
- student_name: "Tom Wriggle".to_string(),
- student_age: 12,
- };
- assert_eq!(
- report_card.print(),
- "Tom Wriggle (12) - achieved a grade of 2.1",
- );
- }
-
- #[test]
- fn generate_alphabetic_report_card() {
- let report_card = ReportCard {
- grade: "A+",
- student_name: "Gary Plotter".to_string(),
- student_age: 11,
- };
- assert_eq!(
- report_card.print(),
- "Gary Plotter (11) - achieved a grade of A+",
- );
- }
-}