Τα enums, σύντμηση των απαριθμήσεων, είναι ένας τύπος που περιορίζει όλες τις πιθανές τιμές κάποιων δεδομένων. Οι πιθανές τιμές ενός enum ονομάζονται παραλλαγές. Τα enums συνεργάζονται επίσης καλά με το match και άλλους τελεστές ροής ελέγχου για να σε βοηθήσουν να εκφράσεις την πρόθεσή σου στα προγράμματά σου σε Rust.
Σε αυτή την άσκηση θα παράγεις ημιδομημένα μηνύματα καταγραφής.
Θα ξεκινήσεις με μερικές ατελείς συναρτήσεις και την παρακάτω απαρίθμηση:
#[derive(Clone, PartialEq, Debug)]
pub enum LogLevel {
Info,
Warning,
Error,
}
Ο στόχος σου είναι να παράγεις ένα μήνυμα καταγραφής ως εξής: "[<LEVEL>]: <MESSAGE>".
Θα χρειαστεί να υλοποιήσεις συναρτήσεις που αντιστοιχούν στα επίπεδα καταγραφής.
Για παράδειγμα, το παρακάτω απόσπασμα δείχνει μια αναμενόμενη έξοδο για τη συνάρτηση log.
log(LogLevel::Error, "Stack overflow")
// Returns: "[ERROR]: Stack overflow"
Και για το info:
info("Timezone changed")
// Returns: "[INFO]: Timezone changed"
Καλή διασκέδαση!
Υπάρχει ένα test σε αυτή τη σουίτα που ελέγχεται από feature gate. Τα feature gates απενεργοποιούν εντελώς τη μεταγλώττιση για ορισμένα τμήματα του προγράμματός σου. Θα τα καλύψουμε αργότερα. Για την ώρα, απλώς να ξέρεις ότι υπάρχει ένα test που χτίζεται και εκτελείται μόνο όταν χρησιμοποιείς έναν ειδικό τρόπο εκτέλεσης των test:
cargo test --features add-a-variant
Αυτό το test έχει σκοπό να σου δείξει πώς να προσθέσεις μια παραλλαγή στην απαρίθμησή σου.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Rust με 99 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.