Hacker News new | ask | show | jobs
by minamea 4842 days ago
Reference please? I think this is wrong.
3 comments

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.