FileInfo
содержит ссылку на str
, а не на String
.Это означает, что он может жить только до тех пор, пока он ссылается на str
.
Вы пытались избежать этой проблемы, клонируя e.path().to_str()
.Таким образом, у вас есть новая копия, которая никоим образом не должна быть связана с e
.Это правильно, но поскольку клон был создан в итерации цикла, он живет только для этой итерации цикла.
Таким образом, в конце концов, клонирование ничего не меняет, поскольку время жизни все ещето же самое (Вы можете попробовать).
Одним из решений было бы изменить FileInfo
так, чтобы он содержал String
вместо &str
.Таким образом, каждый экземпляр FileInfo
может свободно перемещаться без жизненных конфликтов.