1 #![cfg(not(loom))] 2 3 use oneshot::{channel, Receiver, Sender}; 4 5 #[test] test_raw_sender()6fn test_raw_sender() { 7 let (sender, receiver) = channel::<u32>(); 8 let raw = sender.into_raw(); 9 let recreated = unsafe { Sender::<u32>::from_raw(raw) }; 10 recreated 11 .send(100) 12 .unwrap_or_else(|e| panic!("error sending after into_raw/from_raw roundtrip: {e}")); 13 assert_eq!(receiver.try_recv(), Ok(100)) 14 } 15 16 #[test] test_raw_receiver()17fn test_raw_receiver() { 18 let (sender, receiver) = channel::<u32>(); 19 let raw = receiver.into_raw(); 20 sender.send(100).unwrap(); 21 let recreated = unsafe { Receiver::<u32>::from_raw(raw) }; 22 assert_eq!( 23 recreated 24 .try_recv() 25 .unwrap_or_else(|e| panic!("error receiving after into_raw/from_raw roundtrip: {e}")), 26 100 27 ) 28 } 29 30 #[test] test_raw_sender_and_receiver()31fn test_raw_sender_and_receiver() { 32 let (sender, receiver) = channel::<u32>(); 33 let raw_receiver = receiver.into_raw(); 34 let raw_sender = sender.into_raw(); 35 36 let recreated_sender = unsafe { Sender::<u32>::from_raw(raw_sender) }; 37 recreated_sender.send(100).unwrap(); 38 39 let recreated_receiver = unsafe { Receiver::<u32>::from_raw(raw_receiver) }; 40 assert_eq!( 41 recreated_receiver 42 .try_recv() 43 .unwrap_or_else(|e| panic!("error receiving after into_raw/from_raw roundtrip: {e}")), 44 100 45 ) 46 } 47