57 lines
2.2 KiB
Rust
57 lines
2.2 KiB
Rust
// 🦀 Rust 04: Kontrollfluss & Pattern Matching
|
|
// ============================================
|
|
|
|
// 🎯 TEILZIEL 1 (TODO 1): Klassifiziere eine Temperatur mittels `match`
|
|
// - ..=0 -> "Freezing"
|
|
// - 1..=15 -> "Cold"
|
|
// - 16..=25 -> "Comfortable"
|
|
// - 26..=35 -> "Warm"
|
|
// - _ -> "Hot"
|
|
pub fn classify_temperature(temp_celsius: i32) -> &'static str {
|
|
// TODO: Verwende match mit Range-Patterns
|
|
""
|
|
}
|
|
|
|
// 🎯 TEILZIEL 2 (TODO 2): Berechne die n-te Fibonacci-Zahl iterativ
|
|
// n=0 -> 0, n=1 -> 1, n=2 -> 1, n=3 -> 2, n=4 -> 3, n=5 -> 5, n=6 -> 8 ...
|
|
pub fn compute_fibonacci(n: u32) -> u64 {
|
|
// TODO: Berechne Fibonacci iterativ mit einer for- oder while-Schleife
|
|
0
|
|
}
|
|
|
|
// 🎯 TEILZIEL 3 (TODO 3): Simuliere eine Retry-Schleife mit `loop` und `break value`
|
|
// Starte bei attempt = 1.
|
|
// In jedem Durchlauf:
|
|
// - Wenn attempt == success_at: beende mit `break attempt;`
|
|
// - Wenn attempt > limit: beende mit `break 0;` (Limit überschritten)
|
|
// - Sonst attempt += 1
|
|
pub fn retry_operation_loop(limit: u32, success_at: u32) -> u32 {
|
|
// TODO: Verwende `loop` mit `break value`
|
|
0
|
|
}
|
|
|
|
// 🎯 TEILZIEL 4 (TODO 4): Berechtigungsprüfung mit `match` und Guards
|
|
// - Wenn is_admin == true: immer `true`
|
|
// - Wenn role == "Editor" und resource_level <= 3: `true`
|
|
// - Wenn role == "Viewer" und resource_level <= 1: `true`
|
|
// - In allen anderen Fällen: `false`
|
|
pub fn evaluate_permission(role: &str, resource_level: u8, is_admin: bool) -> bool {
|
|
// TODO: Verwende match (role, resource_level, is_admin)
|
|
false
|
|
}
|
|
|
|
// 🎯 TEILZIEL 5 (TODO 5): Summiere die Quadrate aller geraden Zahlen von 1 bis max
|
|
// Iteriere mit `for i in 1..=max`.
|
|
// Wenn i gerade ist (i % 2 == 0), addiere (i as u64) * (i as u64) zur Summe.
|
|
pub fn count_even_squares(max: u32) -> u64 {
|
|
// TODO: Iteriere und summiere die Quadrate der geraden Zahlen
|
|
0
|
|
}
|
|
|
|
fn main() {
|
|
println!("Temp 21°C: {}", classify_temperature(21));
|
|
println!("Fib(10): {}", compute_fibonacci(10));
|
|
println!("Retry (success at 3, limit 5): {}", retry_operation_loop(5, 3));
|
|
println!("Permission Editor Lvl 2: {}", evaluate_permission("Editor", 2, false));
|
|
println!("Even Squares bis 10: {}", count_even_squares(10));
|
|
}
|