@@ -16,14 +16,17 @@ use super::{Defer, Deferred};
1616///
1717/// # Example
1818/// ```
19- /// #[macro_use] extern crate deferred_reference;
19+ /// #[macro_use]
20+ /// extern crate deferred_reference;
2021/// use deferred_reference::Deferred;
21- /// let mut buffer = [0u8; 1024];
22- /// let deferred: Deferred<&mut [u8]> = unsafe { defer_mut!(buffer) };
23- /// assert_eq!(buffer[0], deferred[0]);
24- /// // works also for references to arrays:
25- /// let deferred: Deferred<&mut [u8; 1024]> = unsafe { defer_mut!(buffer) };
26- /// assert_eq!(buffer[0], deferred[0]);
22+ /// fn main() {
23+ /// let mut buffer = [0u8; 1024];
24+ /// let deferred: Deferred<&mut [u8]> = unsafe { defer_mut!(buffer) };
25+ /// assert_eq!(buffer[0], deferred[0]);
26+ /// // works also for references to arrays:
27+ /// let deferred: Deferred<&mut [u8; 1024]> = unsafe { defer_mut!(buffer) };
28+ /// assert_eq!(buffer[0], deferred[0]);
29+ /// }
2730/// ```
2831///
2932/// # Safety
@@ -42,14 +45,17 @@ use super::{Defer, Deferred};
4245///
4346/// Here is an example that will trigger undefined behavior, in order to illustrate how unsafe this macro is:
4447/// ```no_run
45- /// #[macro_use] extern crate deferred_reference;
46- /// let mut buffer = [0u8; 1024];
47- /// let deferred = unsafe { defer_mut!(buffer) };
48- /// buffer[0] = 42; // this implicitly creates a temporary mutable reference to all of `buffer`
49- /// // `deferred` is now invalidated !!!
50- /// // therefore dereferencing `deferred` is undefined behavior, even though
51- /// // the lifetimes of the immutable and mutable references don't overlap:
52- /// assert_eq!(buffer[0], deferred[0]); // undefined behavior!!!
48+ /// #[macro_use]
49+ /// extern crate deferred_reference;
50+ /// fn main() {
51+ /// let mut buffer = [0u8; 1024];
52+ /// let deferred = unsafe { defer_mut!(buffer) };
53+ /// buffer[0] = 42; // implicitly creates a temporary mutable reference to all of `buffer`
54+ /// // `deferred` is now invalidated !!!
55+ /// // therefore dereferencing `deferred` is undefined behavior, even though
56+ /// // the lifetimes of the immutable and mutable references don't overlap:
57+ /// assert_eq!(buffer[0], deferred[0]); // undefined behavior!!!
58+ /// }
5359/// ```
5460///
5561/// # Caveat
0 commit comments