# Const tuples

**URL:** <https://internals.rust-lang.org/t/const-tuples/12894>\
**Category:** language design\
**Created:** [August 14, 2020, 5:58pm UTC](https://internals.rust-lang.org/t/const-tuples/12894 "2020-08-14T17:58:43Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![leonardo](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/leonardo/32/1344_2.png) [@leonardo](https://internals.rust-lang.org/u/leonardo)\
**Post date:** [August 14, 2020, 5:58pm UTC](https://internals.rust-lang.org/t/const-tuples/12894/1 "2020-08-14T17:58:43Z")

</div>

After years perhaps this will see the light (destructuring assignment):

> <https://github.com/rust-lang/rust/pull/71156>

Related, sometimes I'd like to write:

```rust
const (A, B): (u32, u32) = (10, 20);

```

This is handy because sometimes I have compile-time (const) functions that return a tuple.

---

<div class="post-metadata">

**Author:** ![LateNiteMartyParty](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/latenitemartyparty/32/4089_2.png) [@LateNiteMartyParty](https://internals.rust-lang.org/u/LateNiteMartyParty)\
**Post date:** [August 14, 2020, 8:59pm UTC](https://internals.rust-lang.org/t/const-tuples/12894/2 "2020-08-14T20:59:20Z")

</div>

I think that all forms forms of destructuring should be allowed in a const scenario, as I don’t think there are any technical limitations to it and it seems orthogonal to how let statements work. Doesn’t seem particularly controversial.

---

<div class="post-metadata">

**Author:** ![Aloso](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/aloso/32/5039_2.png) [@Aloso](https://internals.rust-lang.org/u/Aloso)\
**Post date:** [August 16, 2020, 2:17am UTC](https://internals.rust-lang.org/t/const-tuples/12894/3 "2020-08-16T02:17:34Z")

</div>

By the way, what is the reason why `const` items allow writing `_` instead of an identifier, but not `static` variables? Does it have something to do with `static`s never getting dropped?

---

<div class="post-metadata">

**Author:** ![samsieber](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/samsieber/32/4671_2.png) [@samsieber](https://internals.rust-lang.org/u/samsieber)\
**Post date:** [August 16, 2020, 2:26am UTC](https://internals.rust-lang.org/t/const-tuples/12894/4 "2020-08-16T02:26:44Z")

</div>

Maybe because a plain `_` doesn't bind anything? And the whole point of `static` is to have something bound for the rest of the program?

---

<div class="post-metadata">

**Author:** ![Uther](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/uther/32/6225_2.png) [@Uther](https://internals.rust-lang.org/u/Uther)\
**Post date:** [August 16, 2020, 6:24am UTC](https://internals.rust-lang.org/t/const-tuples/12894/5 "2020-08-16T06:24:25Z")

</div>

Probably because nobody needs it. `const _ ` can be useful to make compile time assertion that don't need to be accessed. But I can't figure out any practical use of inaccessible static.

---

<div class="post-metadata">

**Author:** ![H2CO3](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/h2co3/32/2849_2.png) [@H2CO3](https://internals.rust-lang.org/u/H2CO3)\
**Post date:** [August 16, 2020, 10:23am UTC](https://internals.rust-lang.org/t/const-tuples/12894/6 "2020-08-16T10:23:09Z")

</div>

But then how will everyone implement their fill-up-the-entire-memory-with-`.rodata` attacks in Rust? /s

---

<div class="post-metadata">

**Author:** ![dhm](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/dhm/32/4879_2.png) [@dhm](https://internals.rust-lang.org/u/dhm)\
**Post date:** [August 16, 2020, 2:12pm UTC](https://internals.rust-lang.org/t/const-tuples/12894/7 "2020-08-16T14:12:06Z")

</div>

> [@Aloso](#):
>
> By the way, what is the reason why `const` items allow writing `_` instead of an identifier, but not `static` variables?

```rust
const _: () = {
    static __: <type> = <value>;
};

```

🙃

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [November 14, 2020, 2:12pm UTC](https://internals.rust-lang.org/t/const-tuples/12894/8 "2020-11-14T14:12:13Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
