【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>();
}
相关推荐
灰色小旋风14 分钟前
力扣第1题:两数之和(C++)
c++·算法
XH华24 分钟前
备战蓝桥杯,第六章:C++语言的输入输出(下)
c++·职场和发展·蓝桥杯
赤水无泪34 分钟前
03 C++语言---预处理器
开发语言·c++
李余博睿(新疆)35 分钟前
c++三级
c++
2401_832131951 小时前
模板编译期机器学习
开发语言·c++·算法
2401_838472511 小时前
单元测试在C++项目中的实践
开发语言·c++·算法
naruto_lnq1 小时前
移动语义与完美转发详解
开发语言·c++·算法
赤水无泪1 小时前
04 C++语言---运算符和符号
开发语言·c++
从此不归路2 小时前
Qt5 进阶【10】应用架构与插件化设计实战:从「单体窗口」走向「可扩展框架」
开发语言·c++·qt·架构
瓦特what?2 小时前
C++编程防坑指南(小说版)
android·c++·kotlin