【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>();
}
相关推荐
BIT_Legend27 分钟前
Torch 模型 model => .onnx => .trt 及利用 TensorTR 在 C++ 下的模型部署教程
c++·人工智能·python·深度学习
.ccl1 小时前
蓝桥杯省赛真题C++B组2024-握手问题
c++·算法·蓝桥杯
神里流~霜灭2 小时前
下降路径最⼩和(medium)
数据结构·c++·算法·链表·贪心算法·动态规划
tan180°2 小时前
版本控制器Git(1)
c++·git·后端
JANGHIGH2 小时前
c++ constraints与concepts使用笔记
c++·笔记
恋恋风辰3 小时前
QT系列教程(13) 事件系统
c++·qt·事件系统
Chenyu_3104 小时前
05.基于 TCP 的远程计算器:从协议设计到高并发实现
linux·网络·c++·vscode·网络协议·tcp/ip·算法
机器视觉知识推荐、就业指导5 小时前
C++ 与 Qt 的内存管理机制
c++·qt
五花肉村长5 小时前
Linux-基础开发工具
linux·运维·服务器·开发语言·c++·visualstudio
点云SLAM5 小时前
C++ 平面拟合原理和最小法实现示例
c++·线性代数·平面·最小二乘法·平面拟合·pca算法