【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);
}
相关推荐
肥大毛19 小时前
C++入门学习---指针
开发语言·c++·学习
崇山峻岭之间19 小时前
C++ Prime Plus 学习笔记039
c++·笔记·学习
AuroraWanderll19 小时前
C++面向对象与类和对象(一)----C++重要基础入门知识
c语言·数据结构·c++·算法·stl
草莓熊Lotso19 小时前
哈希表封装 myunordered_map/myunordered_set 实战:底层原理 + 完整实现
服务器·开发语言·数据结构·c++·人工智能·哈希算法·散列表
45288655上山打老虎1 天前
C++完美转发
java·jvm·c++
SunkingYang1 天前
程序崩溃闪退——MFC共享内存多次OpenFileMapping和MapViewOfFile而没有相应的UnmapViewOfFile和CloseHandle
c++·mfc·共享内存·崩溃·闪退·close·openfilemapping
问君能有几多愁~1 天前
C++ 日志实现
java·前端·c++
JANGHIGH1 天前
c++ 多线程(二)
开发语言·c++
珑墨1 天前
【浏览器】页面加载原理详解
前端·javascript·c++·node.js·edge浏览器
a伊雪1 天前
c++ 引用参数
c++·算法