#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]
) соответственно.