Я изучаю системы подструктурных типов, и Rust — хороший тому пример.
В Rust массив изменяем, и к нему можно обращаться много раз, а не только один раз. В чем разница между «чтением значения», «чтением ссылки» и «чтением изменяемой ссылки»? Я написал программу, как показано ниже, но получил несколько ошибок.
fn main() {
let xs: [i32; 5] = [1, 2, 3, 4, 5];
println!("first element of the array: {}", xs[1]);
println!("first element of the array: {}", &xs[1]);
println!("first element of the array: {}", &mut xs[1]);
}
Вот сообщение об ошибке:
error[E0596]: cannot borrow immutable indexed content `xs[..]` as mutable
--> src/main.rs:5:53
|
2 | let xs: [i32; 5] = [1, 2, 3, 4, 5];
| -- consider changing this to `mut xs`
...
5 | println!("first element of the array: {}", &mut xs[1]);
| ^^^^^ cannot mutably borrow immutable field
Array
по умолчанию изменяемы; отсюда и ваша ошибка. - person erip   schedule 16.01.2018value reads
сопоставляется с семантикойreturn-by-value
,reference reads
сопоставляется с корректной константой семантикойreturn-by-reference
, аmutable reference reads
в большинстве случаев является плохой идеей и просто относится к семантикеreturn-by-reference
. - person erip   schedule 16.01.2018