【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>();
}
相关推荐
玖釉-几秒前
「接雨水」问题的算法建模与双指针优化分析
c++·windows·算法
qwepoih23 分钟前
用 Rust 从零打造一个 CLI 脚手架工具
rust
智者知已应修善业40 分钟前
【51单片机按键加减最大60显示0不再增加减到0不再减】2023-11-18
c++·经验分享·笔记·算法·51单片机
小龙报1 小时前
【优选算法】双指针专项:1.移动零 2. 复写零 3.快乐数
java·c语言·数据结构·c++·python·算法·面试
追烽少年x1 小时前
STL中的设计模式(一)
c++·设计模式
咸甜适中2 小时前
rust语言学习笔记Trait(十)PartialOrd、Ord(大小比较)
笔记·学习·rust
Lumbrologist2 小时前
【C++】零基础入门 · 第 3 节:条件判断(if、switch)
开发语言·c++·算法
codealy2 小时前
Rust 核心理论: 高并发与异步(四)
算法·rust
LeocenaY2 小时前
C/C++ 面试题总结
java·c++·面试
xier_ran2 小时前
【infra之路】从“三堵叹息之墙”到异构计算的狂飙
开发语言·c++·算法