Hello,

I've been working on writing up a proposal that modifies Rust to eliminate (most) implicit copies.

http://smallcultfollowing.com/babysteps/rust/no-implicit-copies/

The idea is to separate types into implicitly copyable types and explicitly copyable types. Implicitly copyable types would be scalars, shared pointers (@), and tuples of implicitly copyable types. Explicitly copyable types would be everything else. Copies of explicitly copyable types only occur when there is an explicit `copy` keyword in the source text.

Also in the proposal is that vectors and strings are no longer unique. Instead, they can be either shared or unique. Vectors become the more fundamental fixed-length arrays, with dynamically growable vectors becoming a library. This allows support for references into arrays, dynamically sized records, and other nice, C-like features.

Feedback would be very welcome.

Note: for those who saw the earlier, "reference type" draft, the functions with `new` return type in this proposal are a different beast from those in the previous "reference type" proposal. If you have no idea what I'm talking about, don't worry, it's not important.


Niko

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to