WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Rust · Basic · question 2 of 100

How does Rust ensure memory safety without a garbage collector?

📕 Buy this interview preparation book: 100 Rust questions & answers — PDF + EPUB for $5

Rust is a systems programming language that is designed to provide both high performance and memory safety. One of the most notable features of Rust is its ownership system, which allows the language to ensure memory safety without requiring a garbage collector.

The ownership system in Rust is based on the concept of ownership, which means that each piece of memory in the program has an owner, who is responsible for managing its lifetime. When an owner goes out of scope, Rust automatically deallocates the memory associated with that owner. This prevents memory leaks and helps ensure that memory is not used after it has been freed.

In addition to ownership, Rust also uses borrowing to ensure memory safety. Borrowing is a mechanism that allows a function to borrow a reference to a value without taking ownership of it. This allows the function to access the value without modifying it, and ensures that the value is not modified by other parts of the program while it is being used.

To illustrate how Rust ensures memory safety without a garbage collector, consider the following example:

    fn main() {
        let mut x = vec![1, 2, 3];
        let y = &x[0];
        x.push(4);
        println!("{}", y);
    }

In this example, we create a vector x that contains the values [1, 2, 3]. We then create a reference y to the first element of x. We then push the value 4 onto x, and finally print the value of y.

If we were to run this program in a language with a garbage collector, it would likely work without issue. However, in Rust, the program would fail to compile, with the following error:

    error[E0502]: cannot borrow `x` as mutable because it is also borrowed as immutable
    --> src/main.rs:4:5
    |
    2 |     let y = &x[0];
    |             -----
Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Rust interview — then scores it.
📞 Practice Rust — free 15 min
📕 Buy this interview preparation book: 100 Rust questions & answers — PDF + EPUB for $5

All 100 Rust questions · All topics