Передача массивов по значению в Rust

#rust

Вопрос:

У меня есть функция ржавчины, определенная как

 fn foo(array: [u32; 100]) {
    // ...
}
 

При вызове этой функции как передается аргумент? Действительно ли весь массив «передается по значению» (копируется в стек), поскольку тип массива реализует свойство копирования?

Комментарии:

1. Обратите внимание, что это не имеет никакого отношения к Copy черте: array: [String; 100] также будет передаваться по значению, даже если String это не Copy так .

Ответ №1:

При вызове этой функции как передается аргумент? Действительно ли весь массив «передается по значению» (копируется в стек), поскольку тип массива реализует свойство копирования?

Я полагаю, ты имеешь в виду [u32; 100] . И да, это передается по значению.

Если это нежелательно, вы можете использовать a Box<[u32; 100]> или просто a Vec<u32> . Или, если вы просто хотите прочитать/изменить массив, а не стать владельцем, вы можете взять срез ( amp;[u32] ) или изменяемый срез ( amp;mut [u32] ) соответственно.