mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 04:24:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use core::asserting::{Capture, TryCaptureGeneric, TryCapturePrintable, Wrapper};
 | |
| 
 | |
| macro_rules! test {
 | |
|     ($test_name:ident, $elem:expr, $captured_elem:expr, $output:literal) => {
 | |
|         #[test]
 | |
|         fn $test_name() {
 | |
|             let elem = $elem;
 | |
|             let mut capture = Capture::new();
 | |
|             assert!(capture.elem == None);
 | |
|             (&Wrapper(&elem)).try_capture(&mut capture);
 | |
|             assert!(capture.elem == $captured_elem);
 | |
|             assert_eq!(format!("{:?}", capture), $output);
 | |
|         }
 | |
|     };
 | |
| }
 | |
| 
 | |
| #[derive(Debug, PartialEq)]
 | |
| struct NoCopy;
 | |
| 
 | |
| #[derive(PartialEq)]
 | |
| struct NoCopyNoDebug;
 | |
| 
 | |
| #[derive(Clone, Copy, PartialEq)]
 | |
| struct NoDebug;
 | |
| 
 | |
| test!(
 | |
|     capture_with_non_copyable_and_non_debugabble_elem_has_correct_params,
 | |
|     NoCopyNoDebug,
 | |
|     None,
 | |
|     "N/A"
 | |
| );
 | |
| 
 | |
| test!(capture_with_non_copyable_elem_has_correct_params, NoCopy, None, "N/A");
 | |
| 
 | |
| test!(capture_with_non_debugabble_elem_has_correct_params, NoDebug, None, "N/A");
 | |
| 
 | |
| test!(capture_with_copyable_and_debugabble_elem_has_correct_params, 1i32, Some(1i32), "1");
 | 
