1 个不稳定版本
0.1.3 | 2023年7月12日 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
#1960 in Rust 模式
7KB
128 行
UniquePtr
Rust 中的 UniquePtr
库受 C++ 中的 unique_ptr
智能指针的启发。这两种实现具有相同的基本目的:提供对动态分配对象的唯一所有权并确保正确释放。
以下是两者之间的一些主要相似之处和不同之处
- 唯一所有权:Rust 中的
UniquePtr
和 C++ 中的unique_ptr
都强制执行对管理对象的独占所有权。这意味着在任何给定时间,只能有一个智能指针实例拥有和管理该对象。 - 自动释放:当
UniquePtr
或unique_ptr
实例超出作用域或显式重置时,它们会自动释放所管理的对象,释放相关内存。
使用方法
use unique_ptr::UniquePtr;
fn main() {
let mut num = 100;
let ptr: *mut i32 = &mut num as *mut i32;
let unique = UniquePtr::with_ptr(ptr);
unsafe {
*unique.ptr = 42;
}
assert_eq!(unsafe { *unique.ptr }, 42);
}
功能
- 支持
Clone
。 - 支持
Deref
和DerefMut
。 - 可用于实现
Drop
特质的任何类型。 - 支持使用
Deleter
类型参数自定义删除器。
- 实现了常见的智能指针操作,如重置指针、释放所有权、克隆指针和解引用。
- 提供安全地处理原始指针的接口。
许可证
本项目采用 MIT 许可证。