当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Arc.from_raw用法及代码示例


本文简要介绍rust语言中 alloc::sync::Arc.from_raw 的用法。

用法

pub unsafe fn from_raw(ptr: *const T) -> Self

从原始指针构造 Arc<T>

原始指针必须先前已通过调用 Arc<U>::into_raw 返回,其中 U 必须具有与 T 相同的大小和对齐方式。如果 UT ,这是微不足道的。请注意,如果U 不是T 但具有相同的大小和对齐方式,这本质上就像转换不同类型的引用一样。有关在这种情况下适用的限制的更多信息,请参阅 mem::transmute

from_raw 的用户必须确保 T 的特定值只被删除一次。

该函数是不安全的,因为使用不当可能会导致内存不安全,即使返回的Arc<T> 从未被访问过。

例子

use std::sync::Arc;

let x = Arc::new("hello".to_owned());
let x_ptr = Arc::into_raw(x);

unsafe {
    // Convert back to an `Arc` to prevent leak.
    let x = Arc::from_raw(x_ptr);
    assert_eq!(&*x, "hello");

    // Further calls to `Arc::from_raw(x_ptr)` would be memory-unsafe.
}

// The memory was freed when `x` went out of scope above, so `x_ptr` is now dangling!

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 alloc::sync::Arc.from_raw。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。