# Why were structural records removed?

**URL:** <https://internals.rust-lang.org/t/why-were-structural-records-removed/1553>\
**Category:** Uncategorized\
**Created:** [February 6, 2015, 12:46pm UTC](https://internals.rust-lang.org/t/why-were-structural-records-removed/1553 "2015-02-06T12:46:34Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![pcwalton](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/pcwalton/32/207_2.png) [@pcwalton](https://internals.rust-lang.org/u/pcwalton)\
**Post date:** [February 6, 2015, 4:00pm UTC](https://internals.rust-lang.org/t/why-were-structural-records-removed/1553/2 "2015-02-06T16:00:52Z")

</div>

They had three usability problems:

1. The fields had to be in the exact same order every time you constructed an instance of the record. This is because the compiler needed a canonical ordering.

2. They could not be recursive without the compiler doing fancy typechecking (coinductive IIRC), which was felt to be not worth the effort.

3. Field-level privacy can’t work with them.

---

_[View the full topic](https://internals.rust-lang.org/t/why-were-structural-records-removed/1553)._
