Почему раст не даёт делать такие вещи: fn main() {

let mut data = [1, 2];
data.fill(data[0]);
}

? С моей точки зрения сначала заимствуется data при вычислении data[0], но после того, как получено значение data[0], data уже свободен и можно вызывать data.fill. Но компилятор так не считает...

9 ответов

7 просмотров
Денис-Артемов Автор вопроса

Это в исходнике такая последовательность, при работе сначала берётся data[0], а потом только вызывается data.fill. Это ответ и на замечание @Dzhegash

Денис Артемов
Это в исходнике такая последовательность, при рабо...

Каком исходнике? Ничего не понял. Оператор . (точка) имеет наивысший приоритет, сначала выполняется он и забирает &mut self, после этого пока .fill() не освободит эту ссылку, нельзя трогать data

let first = data[0]; data.fill(first);

Денис-Артемов Автор вопроса
Ramtaic Natcher
let first = data[0]; data.fill(first);

Вопрос был не как обойти, а почему. Я сам и ответил: <[i32]>::fill(&mut data, data[0]); так видно в каком порядке заимствуется data )

Денис Артемов
Вопрос был не как обойти, а почему. Я сам и ответи...

Ну пока нельзя, причины думаю нет, но проблема небольшая.

Ramtaic Natcher
Ну пока нельзя, причины думаю нет, но проблема неб...

Да и потом нельзя будет. &mut self живёт до конца функции

Денис Артемов
Вопрос был не как обойти, а почему. Я сам и ответи...

Потому что усложняло анализ заимствований и не входило в nll, только недавно была какая-никакая возможность, сейчас точно нет.

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

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

а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
‌/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
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
Всем привет, может уже кто-то пытался выдернуть из api информацию о дате рождения пользователя Есть ли вообще такая возможность?
Artem Stormageddon
2
Ребят, есть какие нибудь мили билды, способные в шмотках с пола закрывать атлас?
Ninja Obormot
12
Карта сайта