pub fn forget<T>(t: T)
Takes ownership and "forgets" about the value without running its destructor.
Any resources the value manages, such as heap memory or a file handle, will linger forever in an unreachable state. However, it does not guarantee that pointers to this memory will remain valid.
Box::leak
.Box::into_raw
.mem::drop
.forget
is not marked as unsafe
, because Rust's safety guarantees do not include a guarantee that destructors will always run. For example, a program can create a reference cycle using Rc
, or call process::exit
to exit without running destructors. Thus, allowing mem::forget
from safe code does not fundamentally change Rust's safety guarantees.
That said, leaking resources such as memory or I/O objects is usually undesirable, so forget
is only recommended for specialized use cases like those shown below.
Because forgetting a value is allowed, any unsafe
code you write must allow for this possibility. You cannot return a value and expect that the caller will necessarily run the value's destructor.
Leak an I/O object, never closing the file:
The practical use cases for forget
are rather specialized and mainly come up in unsafe or FFI code.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/mem/fn.forget.html