1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
//! Compile fail tests //! //! # `Send`-ness //! //! Collections of `Send`-able things are `Send` //! //! ``` //! use heapless::Vec; //! use heapless::spsc::{Consumer, Queue, Producer}; //! use heapless::consts::*; //! //! struct IsSend; //! //! unsafe impl Send for IsSend {} //! //! fn is_send<T>() where T: Send {} //! //! is_send::<Consumer<IsSend, U4>>(); //! is_send::<Producer<IsSend, U4>>(); //! is_send::<Queue<IsSend, U4>>(); //! is_send::<Vec<IsSend, U4>>(); //! ``` //! //! Collections of non-`Send`-able things are *not* `Send` //! //! ``` compile_fail //! use std::marker::PhantomData; //! use heapless::ring_buffer::Consumer; //! use heapless::consts::*; //! //! type NotSend = PhantomData<*const ()>; //! //! fn is_send<T>() where T: Send {} //! //! is_send::<Consumer<NotSend, U4>>(); //! ``` //! //! ``` compile_fail //! use std::marker::PhantomData; //! use heapless::ring_buffer::Producer; //! use heapless::consts::*; //! //! type NotSend = PhantomData<*const ()>; //! //! fn is_send<T>() where T: Send {} //! //! is_send::<Producer<NotSend, U4>>(); //! ``` //! //! ``` compile_fail //! use std::marker::PhantomData; //! use heapless::spsc::Queue; //! //! type NotSend = PhantomData<*const ()>; //! //! fn is_send<T>() where T: Send {} //! //! is_send::<Queue<NotSend, [NotSend; 4]>>(); //! ``` //! //! ``` compile_fail //! use std::marker::PhantomData; //! use heapless::Vec; //! //! type NotSend = PhantomData<*const ()>; //! //! fn is_send<T>() where T: Send {} //! //! is_send::<Vec<NotSend, [NotSend; 4]>>(); //! ``` //! //! # Freeze //! //! Splitting a `Queue` should invalidate the original reference. //! //! ``` compile_fail //! use heapless::spsc::Queue; //! //! let mut rb: Queue<u8, [u8; 4]> = Queue::new(); //! //! let (p, c) = rb.split(); //! rb.enqueue(0).unwrap(); //! ```