【CXX】6.9 CxxVector<T> — std::vector<T>

std::vector 的 Rust 绑定称为 CxxVector。

限制:

Rust 代码永远无法通过值获取 CxxVector。相反,在 Rust 代码中,我们只能通过引用或智能指针来访问向量,例如 &CxxVector 或 UniquePtr<CxxVector>。

CxxVector 不支持 T 为不透明的 Rust 类型。对于语言边界上的不透明 Rust 类型的集合,您应该使用 Vec(C++ 中的 rust::Vec)。

示例

此程序涉及 Rust 代码将 CxxVector(即 std::vectorstd::string)转换为 Rust 的 Vec。

rust 复制代码
// src/main.rs

#![no_main] // main 在 C++ 中由 main.cc 定义

use cxx::{CxxString, CxxVector};

#[cxx::bridge]
mod ffi {
extern "Rust" {
fn f(vec: &CxxVector<CxxString>);
}
}

fn f(vec: &CxxVector<CxxString>) {
let vec: Vec<String> = vec
.iter()
.map(|s| s.to_string_lossy().into_owned())
.collect();
g(&vec);
}

fn g(vec: &[String]) {
println!("{:?}", vec);
}
cpp 复制代码
// src/main.cc

#include "example/src/main.rs.h"
#include <string>
#include <vector>

int main() {
std::vectorstd::string vec{"fearless", "concurrency"};
f(vec);
}
相关推荐
南境十里·墨染春水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