I just posted a draft of a proposal for Rust that aims to eliminate implicit copies. At the moment, it is not the final version; there are some flaws I need to correct. For one thing, I need to address implicit capturing of variables by lambdas.

From the introduction:

This is a proposal for Rust whose purpose is to eliminate implicit copies of aggregate types, while preserving most other aspects of the language. Secondary goals include:

  • permit references into arrays;
  • make destination passing style (DPS) a guaranteed optimization that is obvious from language syntax;
  • support dynamically sized records.