Hacker News new | ask | show | jobs
by dbaupp 4840 days ago
A ~ pointer can still be returned from a function without being deallocated, and the contained data doesn't have to be copied (unlike data on the stack).
1 comments

Reference please? I think this is wrong.
pcwalton is the voice of authority here, but to add to that, the following (verbose) example compiles and works as expected:

  fn make_string() -> ~str {
      return ~"foo";
  }

  fn main() {
     let string: ~str = make_string();

     io::println(string);
  } // deallocated here
My bad folks :)
It's true. Returning a `~` pointer transfers ownership (so your caller will be responsible for cleaning it up).
~ is similar to std::unique_ptr in C++. It is always owned in one place, but that ownership can be transferred at will.