是的,但可能不实用.
D编程语言是提供某种程度的C++互操作性的少数几种语言之一; 你可以在dlang上阅读更多关于它的内容.
请注意模板部分的限制:
请注意,必须通过链接到包含实例化的C++对象代码或共享库来提供D代码中使用的所有实例化.
这实际上意味着您必须使用C++代码来使用正确的类型实例化模板,然后D编译器将链接这些实例.
您也可以为Rust做同样的事情.没有编译器支持,这意味着手动修改名称.在FFI部分中,您将找到link属性:
#[link(name = "snappy")]
extern {
fn snappy_max_compressed_length(source_length: size_t) -> size_t;
}
Run Code Online (Sandbox Code Playgroud)
它告诉编译器哪个链接库将提供符号,您还将支持各种调用约定和no_mangle属性.
您可能需要#[allow(non_snake_case)]酌情申请.
Servo使用bindgen为C和C++代码生成Rust绑定; 我不清楚C++支持的级别,并且有点怀疑它是否可以处理模板.