LINUX.ORG.RU

История изменений

Исправление Virtuos86, (текущая версия) :

Да я вот тоже не могу понять, зачем ты просишь комптлятор поглотить объект

Я ничего не просил. Это же обычный for in цикл, кому в голову пришло сделать такие правила языка, чтобы он неявно объекты захватывал и уничтожал?

for ничего не уничтожает; если ты создал объект, и им никто не владеет, то его логично уничтожить. Также компилятор подчищает все созданные объекты, не имеющие биндинга, в конце каждой строки кода. И цикл ничего не захватывает, он работает с итератором, который ты ему подсунешь. Да, есть «подкапотные» правила, позволяющие подсунуть ему объект, а не итератор, и вместо for i in vector.into_iter() писать просто for i in vector, или for i in &vector вместо for i in vector.iter(), но если это слишком сложно для тебя…

Исходная версия Virtuos86, :

Да я вот тоже не могу понять, зачем ты просишь комптлятор поглотить объект

Я ничего не просил. Это же обычный for in цикл, кому в голову пришло сделать такие правила языка, чтобы он неявно объекты захватывал и уничтожал?

for ничего не уничтожает; если ты создал объект, и им никто не владеет, то его логично уничтожить. Также компилятор подчищает все созданные объекты, не имеющие биндинга, в конце каждой строки кода. И цикл ничего не захватывает, он работает с итератором, который ты ему подсунешь. Да, есть «подкапотные» правила, позволяющие подсунуть ему объект, а не итератор, и вместо for i in vector.into_iter() писать просто for i in vector, или for i in &v вместо for i in vector.iter(), но если это слишком сложно для тебя…