Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to create an immutable array of user input numbers?

I am trying to create an immutable array of user input in rust but the problem is that I have to initialize the array first, and if I initialize the array I cannot insert user inputs in the array.

fn main() {
    //error: If I don't initialize the array then it throws and error.
    let arr: [i32;5] = [0;5];
    for i in 0..5 {
        // let i be the user input for now
        // if I do initialize the array I cannot reassign the array elements because of immutability
        arr[i] = i as i32;
    }
}

Error Message:

   Compiling playground v0.0.1 (/playground)
error[E0594]: cannot assign to `arr[_]`, as `arr` is not declared as mutable
 --> src/main.rs:7:9
  |
3 |     let arr: [i32;5] = [0;5];
  |         --- help: consider changing this to be mutable: `mut arr`
...
7 |         arr[i] = i as i32;
  |         ^^^^^^^^^^^^^^^^^ cannot assign

For more information about this error, try `rustc --explain E0594`.
error: could not compile `playground` due to previous error

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

In Rust you cannot use a variable without initializing it first. But if at initialization time you do not have the final values, you have to declare it as mut:

let mut arr: [i32;5] = [0;5];

And then you initialize the values of arr freely.

If later you want to make the variable arr immutable you just write a rebind:

let arr = arr;

As a side note you can always rebind a value to make it mutable again:

let mut arr = arr;

There are other ways to write that, like a sub-context or a function, but are more or less equivalent:

let arr = {
    let mut arr: [i32; 5] = [0; 5];
    //add values to arr
    arr
};
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading