mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 15:05:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			958 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			958 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
//@ run-pass
 | 
						|
#![allow(unreachable_patterns)]
 | 
						|
 | 
						|
#[derive(Copy, Clone)]
 | 
						|
#[allow(dead_code)]
 | 
						|
struct Pie {
 | 
						|
    slices: u8,
 | 
						|
    size: u8,
 | 
						|
}
 | 
						|
 | 
						|
union Foo {
 | 
						|
    #[allow(dead_code)]
 | 
						|
    bar: i8,
 | 
						|
    baz: Pie,
 | 
						|
}
 | 
						|
 | 
						|
fn main() {
 | 
						|
    let u = Foo { bar: 5 };
 | 
						|
    let (Some(Foo { bar: _ }) | None) = Some(u);
 | 
						|
    let u = Foo { bar: 6 };
 | 
						|
    let (Some(Foo { bar: _ }) | Some(Foo { bar: _ }) | None) = Some(u);
 | 
						|
    unsafe {
 | 
						|
        let u = Foo { bar: 7 };
 | 
						|
        let (Foo { bar } | Foo { bar }) = u;
 | 
						|
        assert_eq!(bar, 7)
 | 
						|
    }
 | 
						|
    let u = Foo { bar: 8 };
 | 
						|
    match Some(u) {
 | 
						|
        Some(Foo { bar: _ }) => 3,
 | 
						|
        None => 4,
 | 
						|
    };
 | 
						|
 | 
						|
    let u = Foo { bar: 9 };
 | 
						|
    unsafe {
 | 
						|
        match u {
 | 
						|
            Foo { baz: Pie { .. } } => {}
 | 
						|
        };
 | 
						|
    }
 | 
						|
    let u = Foo { bar: 10 };
 | 
						|
    unsafe {
 | 
						|
        match u {
 | 
						|
            Foo { baz: Pie { slices: _, size: _ } } => {}
 | 
						|
        };
 | 
						|
    }
 | 
						|
 | 
						|
    let u = Foo { bar: 11 };
 | 
						|
    match u {
 | 
						|
        Foo { baz: _ } => {}
 | 
						|
    };
 | 
						|
}
 |