【CXX】6.6 UniquePtr<T> — std::unique_ptr<T>

std::unique_ptr 的 Rust 绑定称为 UniquePtr。有关 Rust API 的文档,请参见链接。

限制:

目前仅支持 std::unique_ptr<T, std::default_delete>。未来可能会支持自定义删除器。

UniquePtr 不支持 T 为不透明的 Rust 类型。对于在语言边界传递不透明 Rust 类型的所有权,应使用 Box(C++ 中的 rust::Box)。

示例:

UniquePtr 通常用于将不透明的 C++ 对象返回给 Rust。此用例在 blobstore 教程中有所体现。

rust 复制代码
// src/main.rs

#[cxx::bridge]
mod ffi {
    unsafe extern "C++" {
        include!("example/include/blobstore.h");

        type BlobstoreClient;

        fn new_blobstore_client() -> UniquePtr<BlobstoreClient>;
        // ...
    }
}

fn main() {
    let client = ffi::new_blobstore_client();
    // ...
}
cpp 复制代码
// include/blobstore.h

#pragma once
#include <memory>

class BlobstoreClient;

std::unique_ptr<BlobstoreClient> new_blobstore_client();

// src/blobstore.cc

#include "example/include/blobstore.h"

std::unique_ptr<BlobstoreClient> new_blobstore_client() {
  return std::make_unique<BlobstoreClient>();
}
相关推荐
三体世界2 小时前
HTTPS加密原理
linux·开发语言·网络·c++·网络协议·http·https
墨雪遗痕2 小时前
中文Windows系统下程序输出重定向乱码问题解决方案
rust·编码·powershell
杜子不疼.2 小时前
结构体的嵌套问题
c语言·c++
mu_xing_2 小时前
opencv依据图像类型读取图像像素点
c++·opencv
小怡同学..3 小时前
c++系列之智能指针的使用
开发语言·c++
mxpan4 小时前
C++ 单例模式一种实现方式
c++·设计模式
whoarethenext5 小时前
使用 C++/OpenCV 计算图像特征并用 Faiss 进行相似细节搜索
c++·opencv·faiss
only-lucky5 小时前
C++设计模式
java·c++·设计模式
范纹杉想快点毕业6 小时前
Qt构造函数详解:布局与快捷键实战
c语言·开发语言·数据库·c++·qt·命令模式
FreeBuf_6 小时前
ComfyUI遭“Pickai“C++后门攻击,全球700余台AI图像生成服务器沦陷
服务器·c++·人工智能