【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);
}
相关推荐
rainbow68893 小时前
Linux文件描述符与重定向原理
c++
CodeSheep程序羊4 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展
编程小白20264 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
.小墨迹4 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
历程里程碑5 小时前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
郝学胜-神的一滴5 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
天若有情6735 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
czy87874756 小时前
深入了解 C++ 中的 `std::bind` 函数
开发语言·c++
我在人间贩卖青春6 小时前
C++之继承的方式
c++·private·public·protected·继承方式
智者知已应修善业7 小时前
【洛谷P9975奶牛被病毒传染最少数量推导,导出多样例】2025-2-26
c语言·c++·经验分享·笔记·算法·推荐算法