Почему заимствования не допускаются в аргументе изменяемой функции
Название, вероятно, немного сбивает с толку, я имею в виду, что когда я пытаюсь скомпилировать:
if folder_file_paths.len() > compressed_data.len() {
compressed_data.reserve(folder_file_paths.len() - compressed_data.len() );
}
Я получаю эту ошибку:
error[E0502]: cannot borrow `compressed_data` as immutable because it is also borrowed as mutable
--> src/ImageMatching/main.rs:33:59
|
33 | compressed_data.reserve(folder_file_paths.len() - compressed_data.len() );
| --------------- ^^^^^^^^^^^^^^^ - mutable borrow ends here
| | |
| mutable borrow occurs here immutable borrow occurs here
Но я не могу придумать причину, почему это проблема, так как не следует сначала обрабатывать аргумент, usize
значение будет скопировано, а затем reserve
функция запуска?
Когда аргумент функции будет вычислен после того, как фактическая функция начнет выполняться?
Редактировать: folder_file_path
это Vec
, а также compressed_data
это HashMap