1 个不稳定版本

0.1.3 2023年7月12日
0.1.2 2023年7月12日
0.1.1 2023年7月12日
0.1.0 2023年7月12日

#1960 in Rust 模式

MIT/Apache

7KB
128

UniquePtr

Rust 中的 UniquePtr 库受 C++ 中的 unique_ptr 智能指针的启发。这两种实现具有相同的基本目的:提供对动态分配对象的唯一所有权并确保正确释放。

以下是两者之间的一些主要相似之处和不同之处

  1. 唯一所有权:Rust 中的 UniquePtr 和 C++ 中的 unique_ptr 都强制执行对管理对象的独占所有权。这意味着在任何给定时间,只能有一个智能指针实例拥有和管理该对象。
  2. 自动释放:当 UniquePtrunique_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
  • 支持 DerefDerefMut
  • 可用于实现 Drop 特质的任何类型。
  • 支持使用 Deleter 类型参数自定义删除器。
  • 实现了常见的智能指针操作,如重置指针、释放所有权、克隆指针和解引用。
  • 提供安全地处理原始指针的接口。

许可证

本项目采用 MIT 许可证。

无运行时依赖项