# Setting our vision for the 2017 cycle

**URL:** <https://internals.rust-lang.org/t/setting-our-vision-for-the-2017-cycle/3958>\
**Category:** Uncategorized\
**Created:** [September 1, 2016, 6:03pm UTC](https://internals.rust-lang.org/t/setting-our-vision-for-the-2017-cycle/3958 "2016-09-01T18:03:07Z")\
**Posts on this page:** 1\
**Showing post:** 55

<div class="post-metadata">

**Author:** ![wycats](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/wycats/32/473_2.png) [@wycats](https://internals.rust-lang.org/u/wycats)\
**Post date:** [September 1, 2016, 11:54pm UTC](https://internals.rust-lang.org/t/setting-our-vision-for-the-2017-cycle/3958/55 "2016-09-01T23:54:41Z")

</div>

> [@steveklabnik](#):
>
> One argument passed for the hasher isn't short enough? What would be your ideal syntax here?

One thing we've talked about quite a bit but never quite gets off the ground is a single "derive" for common data-types.

Straw-man:

```rs
#[derive(Data)]
// equivalent to
#[derive(Copy | Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)
// what about Default and Zero? Should Data include them if possible?

```

---

_[View the full topic](https://internals.rust-lang.org/t/setting-our-vision-for-the-2017-cycle/3958)._
