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

【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>

http://www.kler.cn/a/581033.html

相关文章:

  • Redis--Set类型
  • JVM、MySQL常见面试题(尽力局)
  • vue3中的深度选择器
  • Python----数据可视化(Seaborn合集:介绍,应用,绘图,使用FacetGrid绘图)
  • 每天一道算法题【蓝桥杯】【最长递增子序列】
  • MVCC的理解(Multi-Version Concurrency Control,多版本并发控制)
  • Spring (十)事务
  • golang从入门到做牛马:第十三篇-Go语言指针:内存的“导航仪”
  • 【day10】智慧导览:学习LBS定位精度标准
  • QwQ-32B企业级本地部署:结合XInference与Open-WebUI使用
  • PySide(PyQT),QGraphicsItem的pos()和scenePos()区别
  • 【Agent】Windows 和 CentOS 安装 Conda
  • 代理模式的C++实现示例
  • 54. 螺旋矩阵(C++)
  • 无头浏览器与请求签名技术-Cloudflare防护
  • windows下docker的安装
  • 解锁 Ryu API:从 Python 接口到 REST 设计全解析
  • UNIAPP圈子社区纯前端万能源码模板 H5小程序APP多端兼容 酷炫UI
  • QT中QVBoxLayout、QWidget、QHBoxLayout、QStringList用法
  • Manus平台的AI模型整合之路:解析其技术内核