Метод leak класса Box
Метод leak класса Box потребляет умный указатель
и возвращает изменяемую ссылку &'a mut T со временем жизни
'a. При этом память, выделенная в куче, намеренно не
освобождается, то есть происходит утечка памяти. Метод
не принимает параметров и может быть полезен, когда нужно
получить ссылку на данные, которые должны жить до конца
программы, например, для глобальных конфигураций или
разделяемых ресурсов.
Синтаксис
Box::leak(b)
Пример
Давайте создадим Box с числом и получим на него
статическую ссылку с помощью метода leak:
fn main()
{
let boxed = Box::new(42);
let leaked: &'static mut i32 = Box::leak(boxed);
println!("{}", leaked);
}
Результат выполнения кода:
42
Пример
Давайте создадим Box со строкой и утечём его,
получив статическую ссылку:
fn main()
{
let boxed = Box::new(String::from("abcde"));
let leaked: &'static mut String = Box::leak(boxed);
println!("{}", leaked);
}
Результат выполнения кода:
"abcde"