相关疑难解决方法(0)

在Rust中为for循环命名中断

有没有办法for在Rust中使用嵌套循环并从内部循环中打破外部循环,例如在Java中可以做到的方式?我知道Rust支持命名中断,loop但我似乎无法找到有关相同的信息for.

for-loop break rust

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

我可以对我自己的非指针类型使用"空指针优化"吗?

当你有一个时Option<&T>,编译器就知道它NULL永远不是一个可能的值&T,而是None变量编码为NULL.这样可以节省空间:

use std::mem;

fn main() {
    assert_eq!(mem::size_of::<&u8>(), mem::size_of::<Option<&u8>>());
}
Run Code Online (Sandbox Code Playgroud)

但是,如果使用非指针类型执行相同操作,则不会有额外的位来存储该值,并且需要额外的空间:

use std::mem;

fn main() {
    // fails because left is 1 and right is 2
    assert_eq!(mem::size_of::<u8>(), mem::size_of::<Option<u8>>()); 
}
Run Code Online (Sandbox Code Playgroud)

一般来说,这是正确的.但是,我想选择加入优化,因为我知道我的类型有某些不可能的值.作为一个例子,我可能有一个有年龄的玩家角色.年龄可能未知,但永远不会高255:

struct Age(u8);

struct Player {
    age: Option<Age>,
}
Run Code Online (Sandbox Code Playgroud)

我希望能够通知优化器这个约束 - Age永远不会255,因此使用该位模式是安全的None.这可能吗?

optimization rust

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

标签 统计

rust ×2

break ×1

for-loop ×1

optimization ×1