Rust--流程控制

循环/判断

ref: 流程控制 - Rust语言圣经(Rust Course)

判断

if condition == true {
    // A...
} else {
    // B...
}

if 语句块是表达式,所以可以为变量赋值,当然要注意的是保证返回的类型相同:

fn main() {
    let condition = true;
    let number = if condition {
        5
    } else {
        6
    };

    println!("The value of number is: {}", number);
}

循环

rust有三种循环方式:for / while 和 loop。

for

for 元素 in 集合 {
  // 使用元素干一些你懂我不懂的事情
}

// 例如,输出1-5:
fn main() {
    for i in 1..=5 {
        println!("{}", i);
    }
    
    for _ in 0..10 {
      // 循环中不使用 i
    }

}

在Rust中,使用for遍历集合要注意所有权:

使用方法等价使用方式所有权
for item in collectionfor item in IntoIterator::into_iter(collection)转移所有权
for item in &collectionfor item in collection.iter()不可变借用
for item in &mut collectionfor item in collection.iter_mut()可变借用

如果是实现了copy特征的数组,例如[i32,10],for item in arr 不会所有权转移,而是直接进行了拷贝

两种循环方式优劣的比较:

// 第一种
let collection = [1, 2, 3, 4, 5];
for i in 0..collection.len() {
  let item = collection[i];
  // ...
}

// 第二种
for item in collection {

}
  • 性能:第一种方式使用索引访问时,每次都会进行边界检查导致性能损耗,而第二种方式不会触发这种检查,因为在编译时便会确认这种访问方式是合法的。因此第二种方式性能更优。
  • 安全:第一种方式通过索引访问,存在两次访问之间collection发生变化,导致脏数据产生的可能;而第二种方式通过迭代连续访问,由于所有权的限制,数据不会发生变化,所以第二种方式更加安全。

continue和break

 for i in 1..4 {
     if i == 2 {
         continue;
     }
     println!("{}", i);
 }
// 1 3

 for i in 1..4 {
     if i == 2 {
         break;
     }
     println!("{}", i);
 }
// 1

while

fn main() {
    let mut n = 0;

    loop {
        if n > 5 {
            break
        }
        println!("{}", n);
        n+=1;
    }

    println!("我出来了!");
}

while vs for:

while 与 for 通过索引便利一样,在性能和安全上比不过 for 迭代器遍历。

loop

简单的无限循环

fn main() {
    loop {
        println!("again!");
    }
}

loop通常与break一起使用,break可以为 loop 语句块的返回值:

fn main() {
    let mut counter = 0;

    let result = loop {
        counter += 1;

        if counter == 10 {
            break counter * 2;
        }
    };

    println!("The result is {}", result);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置rust-analyzer的代码提示,你可以按照以下步骤进行操作: 1. 确保已经在你的项目中安装了rust-analyzer插件。你可以在VSCode的插件市场中搜索并安装"rust-analyzer"插件。 2. 打开VSCode的设置(可以通过菜单栏的"文件" -> "首选项" -> "设置"或者使用快捷键Ctrl + ,打开设置)。 3. 在设置页面的搜索框中输入"rust-analyzer",找到相关的设置选项。 4. 根据你的需求,配置下列常用的代码提示相关的设置: - "rust-analyzer.enable": 设置为true以启用rust-analyzer插件。 - "rust-analyzer.completion.enable": 设置为true以启用代码补全功能。 - "rust-analyzer.completion.addCallArgumentSnippets": 设置为true以自动添加函数调用时的参数提示。 - "rust-analyzer.completion.addCallParenthesis": 设置为true以自动添加函数调用时的括号。 - "rust-analyzer.completion.postfix.enable": 设置为true以启用后缀代码补全功能,例如`.if`、`.let`等。 - "rust-analyzer.hover.enable": 设置为true以启用悬停提示功能。 - "rust-analyzer.inlayHints.enable": 设置为true以启用内联提示功能。 5. 根据你的需求,可以进一步自定义配置rust-analyzer的代码提示行为。你可以在设置中找到更多相关的选项,并根据注释进行配置。 6. 保存设置,并重启VSCode使更改生效。 通过以上步骤,你可以根据自己的喜好和需求来配置rust-analyzer的代码提示功能。请注意,具体的配置选项可能会因rust-analyzer插件版本的不同而有所差异,请参考插件的官方文档或参考其它资源获取更多定制化的配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值