Support for Non-Lexical Lifetimes (NLL) has been included in the Rust compiler since 1.31, and has been enabled on the 2015 edition since 1.36. The new borrow checker for NLL uncovered some bugs in the old borrow checker, which in some cases allowed unsound code to compile, resulting in memory safety issues.
Change your code so the warning does no longer trigger. For backwards compatibility, this unsound code may still compile (with a warning) right now. However, at some point in the future, the compiler will no longer accept this code and will throw a hard error.
The old borrow checker has known soundness issues that are basically impossible to fix. The new NLL-based borrow checker is the fix.
No.
No formal timeline for turning the warnings into errors has been set. See GitHub issue 58781 for more information.
There are some known bugs that trigger this message.