HiveBrain v1.2.0
Get Started
← Back to all entries
patternrustCritical

What does 'let x = x' do in Rust?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
doeswhatletrust

Problem

I saw this code in the wild:

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


What does the let fields = fields; line do? Why is it there?

Solution

It makes fields immutable again.

fields was previously defined as mutable (let mut fields = …;), to be used with sort_by_key which sorts in-place and requires the target to be mutable. The author has chosen here to explicitly prevent further mutability.

"Downgrading" a mutable binding to immutable is quite common in Rust.

Another common way to do this is to use a block expression:

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

Code Snippets

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

Context

Stack Overflow Q#54595345, score: 179

Revisions (0)

No revisions yet.