Я что-то понять не могу, почему замыкание не мутабельно? let

entry = match fs::read_dir(path) {
Ok(result) => result,
Err(_) => continue,
};

let entry = entry
.into_iter()
.collect::<Vec<std::io::Result<std::fs::DirEntry>>>();
entry.into_par_iter().for_each(|file| {
let file = file.unwrap().path();
let metadata = file.metadata().unwrap();
if metadata.is_dir() {
stack.push(file.to_string_lossy().to_string());
} else {
total_size += metadata.len();
}
});

2 ответов

6 просмотров

Потому что тут Fn, который захватывает иммутабельные ссылки (&T) Ты пытаешься захватить туда &mut T, но не можешь, так как у тебя Fn уже звахватил &T. Такие правила: один мутабельная или множество иммутабельных А сделаны это для того, чтобы ты не сломал что-либо, так как у тебя может быть дата-рейс, когда ты из нескольких потоков изменяешь stack. Можешь сделать лок мьютекса, но подумай, а стоит ли?

Лучше оьъясни - зачем тебе параллельно папки итерировать? От этого же не сильно что-то ускорится. Куда лучше их замаппить в футуры со своими операциями, а те уже выполнять параллельно. Ну или не футуры, а что ты там используешь

Похожие вопросы

Обсуждают сегодня

Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
всем привет, можно ли сделать для бота ссылку например рекламную по которой я буду знать что именно с этой ссылки зашли в моего бота?
Kokni
1
а в telegraf смотреть в евенте start или в message?
Kokni
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Как с помощью opencv найти ракету на картинке?))
ᅠ [ Кому не ответил, дублируйте ]
2
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
Карта сайта