1+ pub fn run ( ) {
2+ println ! ( "\n Advanced Pattern Matching Examples:" ) ;
3+
4+ // Example 1: Pattern matching with guards
5+ pattern_guards ( ) ;
6+
7+ // Example 2: Multiple patterns
8+ multiple_patterns ( ) ;
9+
10+ // Example 3: Destructuring
11+ destructuring_examples ( ) ;
12+ }
13+
14+ fn pattern_guards ( ) {
15+ let number = 4 ;
16+
17+ match number {
18+ n @ 1 ..=5 if n % 2 == 0 => println ! ( "{} is even and between 1 and 5" , n) ,
19+ n @ 1 ..=5 => println ! ( "{} is odd and between 1 and 5" , n) ,
20+ n if n % 2 == 0 => println ! ( "{} is even" , n) ,
21+ _ => println ! ( "Doesn't match any pattern" ) ,
22+ }
23+ }
24+
25+ fn multiple_patterns ( ) {
26+ let x = 1 ;
27+ match x {
28+ 1 | 2 | 3 => println ! ( "One, two, or three" ) ,
29+ 4 ..=10 => println ! ( "Four through ten" ) ,
30+ _ => println ! ( "Something else" ) ,
31+ }
32+ }
33+
34+ fn destructuring_examples ( ) {
35+ // Tuple destructuring
36+ let point = ( 3 , -7 ) ;
37+ let ( x, y) = point;
38+ println ! ( "Point: x = {}, y = {}" , x, y) ;
39+
40+ // Struct destructuring
41+ struct Person {
42+ name : String ,
43+ age : u32 ,
44+ }
45+
46+ let person = Person {
47+ name : String :: from ( "Alice" ) ,
48+ age : 30 ,
49+ } ;
50+
51+ let Person { name, age } = person;
52+ println ! ( "{} is {} years old" , name, age) ;
53+ }
0 commit comments