Это означает именно то, что в нем говорится: данные, которые вы заимствуете, живут только на время закрытия. Попытка сохранить его вне замыкания может привести к небезопасной памяти в коде.
Это происходит потому, что предполагаемое время жизни аргумента замыкания не имеет отношения к временам жизни, хранящимся в Vec
.
Как правило, это не проблема, с которой вы сталкиваетесь, потому что что-то вызвало появление большего числа типов. В этом случае вы можете добавить тип к fields
и удалить его из замыкания:
let mut fields: Vec<&str> = Vec::new();
let pusher = |a| fields.push(a);