3 ms·
So in the first example, "from_file" is never used after the first call to "io::util::copy". Is Rust smart enough to realize that this is the last use of "from_
by rcthompson 12y ago
So in the first example, "from_file" is never used after the first call to "io::util::copy". Is Rust smart enough to realize that this is the last use of "from_file" and release it right then, or does it wait until it goes out of scope at the end of the function?
- steveklabnik 12y agoCurrently, borrows are lexical. We don't want them to be that way forever. https://github.com/rust-lang/rust/issues/6393 https://github.com/rust-lang/rust/issues/6393
- wycats 12y agoTo be more specific, automatic dropping will likely always be scope-based. In the rare case where you need to drop something before its owning scope completes, you can explicitly use `drop` as people have said downstream. Borrows are a different story. Especially with mutable borrows (which are basically a static lock on the value), the current lexical restriction is too coarse-grained. There are always workarounds, but it will be nice when it's fixed :)
- rcthompson 12y agoIs there a specific reason for automatic dropping to be scope-based? Is it because dropping things could have side effects (e.g. closing a filehandle) and scope-based dropping makes it easy for someone looking at the code to determine when these side effects will occur?
- zokier 12y agoThere is ongoing discussion about this, eg here: https://github.com/rust-lang/rfcs/pull/239 https://github.com/rust-lang/rfcs/pull/239 (related reddit thread: http://www.reddit.com/r/rust/comments/2gs85u/rfc_allow_compiler_to_drop_unneeded_objects/ http://www.reddit.com/r/rust/comments/2gs85u/rfc_allow_compi... )