mirror of https://github.com/rust-lang/nomicon
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
15 lines
899 B
15 lines
899 B
% The Perils Of Ownership Based Resource Management (OBRM)
|
|
|
|
OBRM (AKA RAII: Resource Acquisition Is Initialization) is something you'll
|
|
interact with a lot in Rust. Especially if you use the standard library.
|
|
|
|
Roughly speaking the pattern is as follows: to acquire a resource, you create an
|
|
object that manages it. To release the resource, you simply destroy the object,
|
|
and it cleans up the resource for you. The most common "resource" this pattern
|
|
manages is simply *memory*. `Box`, `Rc`, and basically everything in
|
|
`std::collections` is a convenience to enable correctly managing memory. This is
|
|
particularly important in Rust because we have no pervasive GC to rely on for
|
|
memory management. Which is the point, really: Rust is about control. However we
|
|
are not limited to just memory. Pretty much every other system resource like a
|
|
thread, file, or socket is exposed through this kind of API.
|