Rust&#x27;s ownership model does more than just allow avoiding a garbage collector.<p>It allows managing arbitrary resources more easily, so it is clear who is control of things at any point of time, e.g. if a function takes a File, who should close it (if the callee closes it, or if the caller needs to) is just a matter of documentation, while it is expressed naturally in the Rust type signature, and is hence checked by compilers. This isn&#x27;t unique to Rust, e.g. it&#x27;s basically the same as C++&#x27;s RAII but it is checked far more precisely by the Rust compiler: it is up to the programmer to not make a mistake in C++. <a href="http:&#x2F;&#x2F;blog.skylight.io&#x2F;rust-means-never-having-to-close-a-socket&#x2F;" rel="nofollow">http:&#x2F;&#x2F;blog.skylight.io&#x2F;rust-means-never-having-to-close-a-s...</a><p>It is also an important part about getting guarantees for concurrent code, as it allows fairly precise control over sharing (or not). This not only means Rust code without `unsafe` is free from data races, but also means that, for example, one can be sure a program built on message passing (ala CSP&#x2F;Go) is not accidentally sharing things that shouldn&#x27;t be shared. <a href="http:&#x2F;&#x2F;blog.rust-lang.org&#x2F;2015&#x2F;04&#x2F;10&#x2F;Fearless-Concurrency.html" rel="nofollow">http:&#x2F;&#x2F;blog.rust-lang.org&#x2F;2015&#x2F;04&#x2F;10&#x2F;Fearless-Concurrency.ht...</a>