在系统中只创建一个实例的结构创建和使用的最佳方法是什么?是的,这是必要的,它是OpenGL子系统,制作多个副本并将其传递到各处会增加混乱,而不是减轻它.
单身人士需要尽可能高效.似乎不可能在静态区域上存储任意对象,因为它包含Vec带有析构函数的对象.第二个选项是在静态区域存储(不安全)指针,指向堆分配单例.什么是最方便和最安全的方法,同时保持语法简洁.
这是一个有争议的话题,所以让我先解释一下我的用例,然后再谈谈实际问题.
我发现对于一堆不安全的东西,确保你不泄漏记忆是很重要的; 如果你开始使用transmute()和,这实际上很容易做到forget().例如,将盒装实例传递给C代码一段任意时间,然后将其取回并使用"恢复它" transmute.
想象一下,我有这种API的安全包装:
trait Foo {}
struct CBox;
impl CBox {
/// Stores value in a bound C api, forget(value)
fn set<T: Foo>(value: T) {
// ...
}
/// Periodically call this and maybe get a callback invoked
fn poll(_: Box<Fn<(EventType, Foo), ()> + Send>) {
// ...
}
}
impl Drop for CBox {
fn drop(&mut self) {
// Safely load all saved Foo's here and discard them, preventing memory leaks
} …Run Code Online (Sandbox Code Playgroud) 我们有“删除我的所有数据”功能。我想从许多网络日志文件中删除一组 IP。
目前在运行时,我打开一个包含要删除的 IP 地址的 CSV,将其转换为一个集合,扫描文件,并在日志 IP 匹配时执行删除逻辑。
有什么方法可以加载 CSV 并在编译时将其转换为一组?我们正在尝试将内容迁移到 AWS lambda,并且只部署一个没有依赖项的静态二进制文件非常棒。
rust ×3