Scope and ownership

In Rust, every data value has a single owning scopeā€”no more, no less. So, what's a scope? The easy answer is that a scope is the place where a block expression stores its variables. Scopes are not directly represented in the source code, but a scope begins when a block expression begins, with a { symbol, and ends when the block expression ends, with } (or when a return statement is run before the block reaches its end). The scope is the chunk of memory where the block's variables are stored.

Every data value has an owning scope, including implied temporary values such as the result of 2 + 2 when we ask Rust to compute (2 + 2) * 3.

When Rust is done with a scope, all of the data values that scope owns are discarded and the memory that was used to store them is freed up for other uses. This includes memory that was allocated on the heap, which we'll learn how to use in Chapter 6Heap Memory and Smart Pointers.

The time between when a value is created and the time when its owning scope is done is called the lifetime of the value.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.226.251.70