Safe wrapper around SPIR-V Cross
spirv_cross
provides a safe wrapper around SPIRV-Cross for use with Rust. For example, here is a simple function to parse a SPIR-V module and compile it to HLSL and MSL:
extern crate spirv_cross;
use spirv_cross::{spirv, hlsl, msl};
fn example(module: spirv::Module) {
// Parse a SPIR-V module
let parsed_module = spirv::Parser::new()
.parse(&module, &spirv::ParserOptions::default())
.unwrap();
// Compile to HLSL
let hlsl = hlsl::Compiler::new()
.compile(&parsed_module, &hlsl::CompilerOptions::default())
.unwrap();
println!("{}", hlsl);
// Compile to MSL
let msl = msl::Compiler::new()
.compile(&parsed_module, &msl::CompilerOptions::default())
.unwrap();
println!("{}", msl);
}