相关疑难解决方法(0)

有没有一种方法可以将外部资源数据包含在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
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

resources rust

15
推荐指数
1
解决办法
2870
查看次数

指定常量哈希映射时的 Rust 最佳实践

我正在尝试在 Rust 中设置一个常量、预定义的哈希映射。我不确定 Rust 中的最佳实践是什么。

use std::collections::HashMap;

pub const Countries: HashMap<&str, &str> = [
    ("UK", "United Kingdom"),
    ("US", "United States")
].iter().cloned().collect();
Run Code Online (Sandbox Code Playgroud)

稍后将在库中引用这些内容。

如果这不好,我猜函数中的匹配是最好的方法?

hashmap rust

11
推荐指数
1
解决办法
4250
查看次数

全局不可变哈希集

如何创建一个不可变的、全局可访问的 HashSet 来存储编译时已知的值?我知道全局状态是不需要的,但由于它是不可变的,所以它可能仍然是可以接受的,对吧?

static global_set: HashSet<String> = create_set();

fn create_set() -> HashSet<String> {
    let mut new_set: HashSet<String> = HashSet::new();

    new_set.insert("ONE".to_string());
    new_set.insert("TWO".to_string());
    new_set.insert("THREE".to_string());

    new_set
}
Run Code Online (Sandbox Code Playgroud)

这是行不通的。

error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants
  --> src\lib.rs:62:38
   |
62 | static cclass_map: HashSet<String> = populate_hashmap();
   |                                      ^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

如果我做了create_seta const fn 它会抱怨the mutable references in const fn are unstable

我觉得必须有更好的方法来做到这一点。如何才能以更好的方式做到这一点?或者我怎样才能让它发挥作用?

rust

6
推荐指数
0
解决办法
1946
查看次数

标签 统计

rust ×3

hashmap ×1

resources ×1