As was decided when resources were introduced (I hope most of you were
informed), we wanted to drop support for object destructors. Resources
are now mostly useable -- though if you want to store or pass them
somewhere, you have to box them immediately on creation until we get
our move semantics worked out, or you'll get weird errors about
copying noncopyable types—or even code that silently does the wrong
thing!

resource my_cleanup(x: my_pointer_type) {
    my_free(x);
}

fn test() {
    // This is safe, cleans up the pointer at end of block
    {
        let x = my_cleanup(my_mk_pointer());
        do_stuff(*x); // Pass raw pointer
    }

    // This is safe, will clean up when refcount hits zero
    sink(@my_cleanup(my_mk_pointer()));

    // Don't do this (yet)
    sink_2(my_cleanup(my_mk_pointer()));
}
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to