# \[Roadmap 2017\] Productivity: learning curve and expressiveness

**URL:** https://internals.rust-lang.org/t/roadmap-2017-productivity-learning-curve-and-expressiveness/4097
**Category:** Uncategorized
**Created:** [September 17, 2016, 1:22pm UTC](https://internals.rust-lang.org/t/roadmap-2017-productivity-learning-curve-and-expressiveness/4097 "2016-09-17T13:22:33Z")
**Posts on this page:** 1
**Showing post:** 109

<div class="post-metadata">

### Author: ![scottmcm](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/scottmcm/32/2355_2.png) [@scottmcm](https://internals.rust-lang.org/u/scottmcm)
#### Post date: [December 2, 2016, 3:29am UTC](https://internals.rust-lang.org/t/roadmap-2017-productivity-learning-curve-and-expressiveness/4097/109 "2016-12-02T03:29:43Z")

</div>

> [@nikomatsakis](#):
>
> Some kind of auto-clone

Compared to all the times I had to code review "you should be moving that shared\_ptr\<\> in C++", I really like Rust's existing choices here. `Copy` when it's trivial enough to not care, move by default so the right thing usually happens without thinking, but also really easy to `.clone()` when you have to. (I needed to, essentially, `.clone()` a `SqlParameter` in C# the other day, and it was miserable. C#'s `IClonable` totally doesn't work, and canonical C# doesn't reliably even have a "copy constructor". Hooray for `#[derive(Clone)]`!) A "diffuse extra copies all over problem" adds up in cost, but is a royal pain to clean up later. And, extrapolating from `shared_ptr`/`unique_ptr` experience, having the copies explicit probably makes a "wait a minute, all these `Arc`s can just be `Box`s" realization easier.

Maybe there's a way that Copy as a concept can be extended to `impl`s using `Copy` types, though? Like if `impl Foo<T>` automatically provided `impl Foo<&T>` for `trait Foo<#[in] T>` when `T:Copy`? (So one Add for i32 would be enough, without needing the other three, for example.)

---

_[View the full topic](https://internals.rust-lang.org/t/roadmap-2017-productivity-learning-curve-and-expressiveness/4097)._
