rust - 'let x = x' 在 Rust 中有什么作用?

标签 rust

我看到这段代码 in the wild :

fields.sort_by_key(|&(_, ref field)| field.tags().into_iter().min().unwrap());
let fields = fields;

let fields = fields; 行是做什么的?为什么会在那里?

最佳答案

它再次使 fields 不可变。

fields 之前被定义为可变的 (let mut fields = …;),与 sort_by_key 一起使用要求目标是可变的。作者在这里选择明确防止进一步的可变性。

将可变绑定(bind)“降级”为不可变绑定(bind)在 Rust 中很常见。

另一种常用的方法是使用 block 表达式:

let fields = {
    let mut fields = …;
    fields.sort_by_key(…);
    fields
};

关于rust - 'let x = x' 在 Rust 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54912384/

相关文章:

shared-libraries - 制作和使用 Rust 共享库的正确方法?

types - "Box<Fn() + Send + ' static>”在 Rust 中是什么意思?

rust - 如何在 actix 中创建 application/json HTTPResponse?

error-handling - Rust——如何精确优雅地处理错误?

rust - 为什么 Futures 在 Rust 中使用引脚?

rust - Rust会优化掉未使用的函数参数吗?

c++ - Rust 中指针和引用的区别

struct - 在以下上下文中如何解决 "lifetime of reference outlives lifetime of borrowed content"?

rust - 如何打印不带引号的 OsStr?

rust - 如何将向量与自身的反向版本进行比较?