Comments 7
А кто-нибудь знает откуда взялась конструкция &raw mut
. Кто-то криво лайфтайм написал или новое ключевое слово завезли?
"Теперь можно использовать изменяемые ссылки в константных контекстах". Чем это отличается от OnceCell и lazy_static? Просто интересно
OnceCell и lazy_static вычисляются один раз, но при выполнении программы, когда происходит первый раз доступ к ним. const как бы тоже вычисляется один раз, но при компиляции программы, и служит не как какое-то конкретное значение, а как текстовый шаблон для подстановки в разных местах программы, так можно написать const v = const { Vec::new() } и в любом месте, где напишешь v будет подставлен свой вектор, а не один заранее вычисленный, на которой будут ссылаться все v. Так можно написать let a = [Vec::new(); 2] и компилятор забракует этот код, т.к ты пытаешься размножить вектор в каждую ячейку массива, а если написать a = [const { Vec::new() }; 2], то все будет норм, как будто ты просто руками написал [Vec::new(), Vec::new()], или будто это тривиально копируемое значение
Rust 1.83.0: новые возможности констант