小编ste*_*era的帖子

如何创建一个全局的,可变的单例?

在系统中只创建一个实例的结构创建和使用的最佳方法是什么?是的,这是必要的,它是OpenGL子系统,制作多个副本并将其传递到各处会增加混乱,而不是减轻它.

单身人士需要尽可能高效.似乎不可能在静态区域上存储任意对象,因为它包含Vec带有析构函数的对象.第二个选项是在静态区域存储(不安全)指针,指向堆分配单例.什么是最方便和最安全的方法,同时保持语法简洁.

rust

97
推荐指数
3
解决办法
3万
查看次数

如何创建异构的对象集合?

我想在一个中使用特征对象Vec.在C++中我可以使一个基类Thing从中导出Monster1Monster2.然后我可以创建一个std::vector<Thing*>.Thing对象必须存储一些数据,例如x : int, y : int,派生类需要添加更多数据.

目前我有类似的东西

struct Level {
    // some stuff here
    pub things: Vec<Box<ThingTrait + 'static>>,
}

struct ThingRecord {
    x: i32,
    y: i32,
}

struct Monster1 {
    thing_record: ThingRecord,
    num_arrows: i32,
}

struct Monster2 {
    thing_record: ThingRecord,
    num_fireballs: i32,
}
Run Code Online (Sandbox Code Playgroud)

我定义了一个ThingTrait与方法get_thing_record(),attack(),make_noise()等,并实现它们的Monster1Monster2.

rust

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

我可以在Rust中按值有效地返回一个对象吗?

我想用函数初始化一个大对象.目前我有:

fn initialize(mydata: &mut Vec<Vec<MyStruct>>) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我更愿意:

fn initialize() -> Vec<Vec<MyStruct>> { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

我听说C++经常实现返回值优化(RVO),如果你很幸运并拥有一个好的编译器.我们可以在这里禁用复制并通过传递给函数的隐藏指针返回吗?RVO是语言的一部分还是可选的优化?

optimization rust return-value-optimization

7
推荐指数
1
解决办法
2010
查看次数

从调试版本链接到优化的包

我想将一些性能密集型代码分成一个.so(我正在运行Kubuntu Linux),而我的代码的主要数量是在调试模式下编译的.我希望在我的代码中获得更快的编译和运行时支持,但是运行少量密集代码并且包含所有调试检查是不可接受的.

是否可以使用货物执行此操作?似乎Cacrgo将顶级配置文件传播到依赖项,因此它们都被编译为发布或调试,具体取决于主要包的请求.

rust rust-cargo

5
推荐指数
1
解决办法
91
查看次数

glReadPixels与glGetTexImage

我需要从大纹理(2048x2048)中提取一个小矩形(200x200),并将RGBA像素放入内存中.似乎有两种方法可以做到这一点:

a)使用glGetTexImage并传入接收整个纹理的缓冲区,并从中读取相应的像素

b)创建一个帧缓冲区,使用仅包含所需部分的纹理绘制到帧缓冲区中,并提取使用glReadPixels生成的像素.

我猜b)速度更快,但我相对新手,我想知道我是否朝着正确的方向前进.a)更容易编码,所以我想知道可能的速度命中是否可以忽略不计.

史蒂夫

opengl

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

匹配较少的样板

我有嵌套的结构enums,即.enum X有一个包含enum Y等的变体.有没有办法访问字段,例如x.y.z,如果x.y.z不存在运行时错误(例如,x是错误的变体).此外,这是一个相当道德的事情,还是有更好的选择,没有match声明无处不在?效率并不是那么重要,尽管让它尽可能便宜会很好.

rust

0
推荐指数
1
解决办法
87
查看次数