小编Pet*_*ter的帖子

如何避免使用负面消极?

我正在将一大块(2000行)的专有C代码翻译成Rust.在C中,通常将指针,数组索引等向下运行,只要它是非负的.在Rust中,简化为骨骼,它看起来像:

while i >= 0 && more_conditions { 
    more_work;
    i -= 1;
}
Run Code Online (Sandbox Code Playgroud)

当然,如果iusize,你得到的减法下溢出.我已经学会了通过使用for循环来解决这个问题,将.rev()索引偏移一个,或者使用不同的类型和使用as usize等等.

通常它可以工作,通常我可以使它清晰,但我正在修改的代码充满了彼此相互运行的索引,并最终进行了测试 i_low > i_high

像(在Rust)

loop {
    while condition1(i_low) { i_low += 1; }
    while condition2(i_high) { j_high -= 1; }
    if i_low > i_high { return something; }
    do_something_else;
}
Run Code Online (Sandbox Code Playgroud)

每隔一段时间就会出现这种恐慌,i_high从0开始.

j_high >= 0 &&在代码中插入了很多内容,但它的可读性却大打折扣.

经验丰富的Rust程序员如何避免usize变量变为-1?

  1. 换循环? for i in (0..size).rev()

  2. 铸件? i as usize,检查后i < …

indexing rust

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

标签 统计

indexing ×1

rust ×1