1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
use thiserror::Error; use enum_index_derive::{IndexEnum}; use variant_count::VariantCount; mod random_grund; pub fn get_grund() -> Grund { rand::random() } #[non_exhaustive] #[derive(Debug, Error, VariantCount, IndexEnum)] pub enum Grund { #[error("Fahrt faellt aus")] FahrtFaelltAus, #[error("Fährt heute nur bis {0}")] FaehrtHeuteNurBis(String), #[error("Verzögerungen im Betriebsablauf")] VerzoegerungenImBetriebsablauf, #[error("Gleiswechsel")] Gleiswechsel, #[error("Fahrt fällt aus, es verkehrt Ersatzfahrt {0}")] FahrtFaelltAusMitErsatzfahrt(String), #[error("Technische Störungen am Zug")] TechnischeStoerungenAmZug, #[error("Verspätung eines vorausfahrenden Zuges")] VerspaetungEinesVorausfahrendenZuges, #[error("Verspätete Bereitstellung des Zuges")] VerspaeteteBereitstellungDesZuges, #[error("Bauarbeiten")] Bauarbeiten, #[error("Witterungsbedingte Störung")] WitterungsbedingteStoerung, #[error("Weichenstörung")] WeichenStoerung, #[error("Änderung im Fahrtverlauf")] AenderungImFahrtverlauf, #[error("Unwetter")] Unwetter, } #[cfg(test)] mod tests { use super::*; #[test] fn bauarbeiten() { let formatted = format!("Grund: {}", Grund::Bauarbeiten); assert_eq!("Grund: Bauarbeiten", formatted); } #[test] fn get_random_grund() { println!("Grund: {}", get_grund()); } }