【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>();
}
相关推荐
南境十里·墨染春水4 小时前
C++ 工厂模式:从入门到进阶,彻底掌握对象创建的艺术
开发语言·c++·算法
红尘散仙5 小时前
别再手动录屏了:用 VHS 给终端应用生成会动的文档素材
后端·rust
一拳一个呆瓜7 小时前
【STL】_SCL_SECURE_NO_WARNINGS
c++·stl
小小编程路7 小时前
C++ 异常 完整讲解
开发语言·c++
Frank学习路上10 小时前
【C++】面试:关键字与语法特性
c++·面试
Irissgwe11 小时前
数据结构-栈和队列
数据结构·c++·c·栈和队列
点云侠12 小时前
PCL 生成三棱锥点云
c++·算法·最小二乘法
.道阻且长.12 小时前
C++ string 操作指南:接口解析
java·c语言·开发语言·c++
laplaya13 小时前
使用 vcpkg 管理 C++ 项目中的依赖
开发语言·c++
techdashen13 小时前
从 Windows 的 ping.exe 入手:动态库、调用约定与 Rust FFI
开发语言·windows·rust