资源 – 将资源文件包含到Rust代码中

是否有一个很好的方法来将外部数据包含到Rust源代码中?想像下面的例子:

let SHADER: &'static str = "
#version 140

attribute vec2 v_coord;
uniform sampler2D fbo_texture;
varying vec2 f_texcoord;

void main(void) {
    gl_Position = vec4(v_coord, 0.0, 1.0);
    f_texcoord = (v_coord + 1.0) / 2.0;
}";

fn main() {
    // compile and use SHADER
}

当然,如上所述,您可以内联着色器,但是在使用外部软件设计着色器时,或者在使用多个着色器时,会变得非常复杂.您还可以从外部文件加载数据,但有时您只想提供一个小型可执行文件,而无需确定资源的存储位置.

如果解决方案也适用于二进制文件(例如,图标,字体),那将会很好.

我知道有可能写锈蚀插件,据我所知,他们应该可以提供这样的功能.但编写自己的插件是相当复杂的,我想知道是否已经有一个很好的插件/ lib /标准的方式来包含资源文件.另一点是,它应该在不使用手动链接器指针方式的情况下工作.

我相信你需要include_str!()宏:

let SHADER: &'static str = include_str!("shader.glsl");

shader.glsl文件应位于源文件旁边,以使其正常工作.

翻译自:https://stackoverflow.com/questions/25505275/include-resource-file-into-rust-code

转载注明原文:资源 – 将资源文件包含到Rust代码中