Add examples for unsized {Rc,Arc}::from_raw
This commit is contained in:
parent
57e0dea178
commit
d4adb3af58
2 changed files with 28 additions and 0 deletions
|
@ -1225,6 +1225,20 @@ impl<T: ?Sized> Rc<T> {
|
||||||
///
|
///
|
||||||
/// // The memory was freed when `x` went out of scope above, so `x_ptr` is now dangling!
|
/// // The memory was freed when `x` went out of scope above, so `x_ptr` is now dangling!
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// Convert a slice back into its original array:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::rc::Rc;
|
||||||
|
///
|
||||||
|
/// let x: Rc<[u32]> = Rc::new([1, 2, 3]);
|
||||||
|
/// let x_ptr: *const [u32] = Rc::into_raw(x);
|
||||||
|
///
|
||||||
|
/// unsafe {
|
||||||
|
/// let x: Rc<[u32; 3]> = Rc::from_raw(x_ptr.cast::<[u32; 3]>())
|
||||||
|
/// assert_eq!(x.as_ref(), &[1, 2, 3]);
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "rc_raw", since = "1.17.0")]
|
#[stable(feature = "rc_raw", since = "1.17.0")]
|
||||||
pub unsafe fn from_raw(ptr: *const T) -> Self {
|
pub unsafe fn from_raw(ptr: *const T) -> Self {
|
||||||
|
|
|
@ -1371,6 +1371,20 @@ impl<T: ?Sized> Arc<T> {
|
||||||
///
|
///
|
||||||
/// // The memory was freed when `x` went out of scope above, so `x_ptr` is now dangling!
|
/// // The memory was freed when `x` went out of scope above, so `x_ptr` is now dangling!
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// Convert a slice back into its original array:
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use std::sync::Arc;
|
||||||
|
///
|
||||||
|
/// let x: Arc<[u32]> = Arc::new([1, 2, 3]);
|
||||||
|
/// let x_ptr: *const [u32] = Arc::into_raw(x);
|
||||||
|
///
|
||||||
|
/// unsafe {
|
||||||
|
/// let x: Arc<[u32; 3]> = Arc::from_raw(x_ptr.cast::<[u32; 3]>())
|
||||||
|
/// assert_eq!(x.as_ref(), &[1, 2, 3]);
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[stable(feature = "rc_raw", since = "1.17.0")]
|
#[stable(feature = "rc_raw", since = "1.17.0")]
|
||||||
pub unsafe fn from_raw(ptr: *const T) -> Self {
|
pub unsafe fn from_raw(ptr: *const T) -> Self {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue