【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);
}
相关推荐
pumpkin845141 小时前
Rust Mock 工具
开发语言·rust
kingmax542120082 小时前
【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt
数据结构·c++·算法·广度优先
AgilityBaby5 小时前
UE5打包项目设置Project Settings(打包widows exe安装包)
c++·3d·ue5·游戏引擎·unreal engine
UestcXiye7 小时前
Rust 学习笔记:发布一个 crate 到 crates.io
rust
让我们一起加油好吗7 小时前
【基础算法】高精度(加、减、乘、除)
c++·算法·高精度·洛谷
鑫鑫向栄7 小时前
[蓝桥杯]缩位求和
数据结构·c++·算法·职场和发展·蓝桥杯
stormsha7 小时前
MCP架构全解析:从核心原理到企业级实践
服务器·c++·架构
梁下轻语的秋缘7 小时前
每日c/c++题 备战蓝桥杯(P1204 [USACO1.2] 挤牛奶 Milking Cows)
c语言·c++·蓝桥杯
鑫鑫向栄7 小时前
[蓝桥杯]外卖店优先级
数据结构·c++·算法·职场和发展·蓝桥杯
Zfox_7 小时前
【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
linux·服务器·c++·muduo库