当前位置: 首页 > news >正文

【CXX】6 内置绑定

除了所有基本类型(如 i32 <=> int32_t),以下常见类型可以用于共享结构体的字段以及外部函数的参数和返回值。

Rust 中的名称C++ 中的名称限制条件
Stringrust::String
&strrust::Str
&[T]rust::Slice不能包含不透明的 C++ 类型
&mut [T]rust::Slice不能包含不透明的 C++ 类型
CxxStringstd::string不能按值传递
Boxrust::Box不能包含不透明的 C++ 类型
UniquePtrstd::unique_ptr不能包含不透明的 Rust 类型
SharedPtrstd::shared_ptr不能包含不透明的 Rust 类型
[T; N]std::array<T, N>不能包含不透明的 C++ 类型
Vecrust::Vec不能包含不透明的 C++ 类型
CxxVectorstd::vector不能按值传递,不能包含不透明的 Rust 类型
*mut T, *const TT*, const T*带有裸指针参数的函数必须声明为 unsafe 才能调用
fn(T, U) -> Vrust::Fn<V(T, U)>目前仅支持从 Rust 传递到 C++
Resultthrow/catch仅允许作为返回类型

C++ 中 rust 命名空间的 API 由 CXX GitHub 仓库中的 include/cxx.h 文件定义。在使用这些类型时,你需要在 C++ 代码中包含此头文件。当使用 Cargo 和 cxx-build crate 时,可以通过 #include “rust/cxx.h” 包含此头文件。

rust 命名空间还提供了表中所有类型的小写别名,适用于偏好这种风格的代码库。例如,rust::String 和 rust::Vec 也可以写成 rust::string 和 rust::vec 等。

待实现的绑定
以下类型计划在“不久的将来”支持,但目前尚未实现。这些类型的实现预计不会太困难,但需要为每种类型在其非原生语言中设计一个良好的 API。

Rust 中的名称C++ 中的名称
BTreeMap<K, V>待定
HashMap<K, V>待定
Arc待定
Option待定
待定std::map<K, V>
待定std::unordered_map<K, V>

相关文章:

  • MongoDB 触发器实现教程
  • js和java中方法重载(js本身是不支持方法重载,方便对比学习)
  • 从零开始的python学习(五)P75+P76+P77+P78+P79+P80
  • 2001-2023年上市公司数字化转型年报词频统计(年报词频统计和MDA词频统计两种方式)(吴非、赵宸宇、甄红线300+关键词三种方法)
  • 施磊老师c++笔记(四)
  • sonarqube+SonarScanner+postpresql+jenkins
  • 全网最详解答OSPF基础
  • 光谱相机检测肉类新鲜度的原理
  • 一位年薪35W的测试被开除,回怼的一番话,令人沉思
  • Spring IoC:解耦与控制反转的艺术
  • qt 多进程使用共享内存 ,加速数据读写,进程间通信 共享内存
  • pyCharm快速安装tensorflow、keras环境
  • 【1688】崖山集群YAC安装备忘
  • 计算机三级网络技术备考(5)
  • AI4CODE】3 Trae 锤一个贪吃蛇的小游戏
  • 三分钟掌握音视频处理 | 在 Rust 中优雅地集成 FFmpeg
  • JavaScript(Web APIs)
  • 插入排序算法
  • SpringBoot整合SpringSecurity实现多表登录
  • tcc编译器教程7 为编译gmake编写Makefile文件
  • 做家电网站/推广平台
  • 网站自己怎么做优化/数据分析软件
  • 电子商务网站建设期末作业/网站优化的方法有哪些
  • 化妆品公司网站源码/优化营商环境
  • 怎么做国际网站首页/广州seo优化排名公司
  • 专业网站建设公司推荐/百度品牌专区