# Should libstd use descriptive names for type parameters?

**URL:** <https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742>\
**Category:** libs\
**Created:** [March 30, 2019, 11:10pm UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742 "2019-03-30T23:10:18Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![kornel](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kornel/32/2711_2.png) [@kornel](https://internals.rust-lang.org/u/kornel)\
**Post date:** [March 30, 2019, 11:10pm UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/1 "2019-03-30T23:10:19Z")

</div>

Sometimes names of type parameters leak into error messages, e.g.:

```rust
fn main() {
    (0..1000).sum() as f32;
}

```

> ```
> (0..1000).sum() as f32;
> ^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for `S`
> 
> ```

I haven't written `S`. It isn't anywhere in my source code, and it's a cryptic name. For the sake of error messages where the type parameter appears, would it be better to use descriptive types names, e.g. `fn sum<SumAccumulatorType>`?

> ```
> (0..1000).sum() as f32;
> ^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for `SumAccumulatorType`
> 
> ```

---

<div class="post-metadata">

**Author:** ![notriddle](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/notriddle/32/14082_2.png) [@notriddle](https://internals.rust-lang.org/u/notriddle)\
**Post date:** [March 30, 2019, 11:54pm UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/2 "2019-03-30T23:54:31Z")

</div>

Make it `SumAccumulator`, without the Type at the end, and I’ll be happy.

---

<div class="post-metadata">

**Author:** ![mark-i-m](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/mark-i-m/32/3167_2.png) [@mark-i-m](https://internals.rust-lang.org/u/mark-i-m)\
**Post date:** [March 31, 2019, 12:07am UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/3 "2019-03-31T00:07:31Z")

</div>

It would be clearer IMHO to just quote the definition of `sum` where `S` is defined.

---

<div class="post-metadata">

**Author:** ![CAD97](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/cad97/32/3460_2.png) [@CAD97](https://internals.rust-lang.org/u/CAD97)\
**Post date:** [March 31, 2019, 3:02am UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/4 "2019-03-31T03:02:57Z")

</div>

Suggestion: when the type variable cannot be inferred, show the definition site of the type variable as so (as mark-i-m suggests as well):

```rust
(0..1000).sum() as f32;
^^^^^^^^^^^^^^^^^^^^^^ cannot infer type for `S` in `Iterator::sum::<S>`

```

---

<div class="post-metadata">

**Author:** ![felix.s](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/felix.s/32/8073_2.png) [@felix.s](https://internals.rust-lang.org/u/felix.s)\
**Post date:** [March 31, 2019, 8:09am UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/5 "2019-03-31T08:09:38Z")

</div>

Or just `SumResult`…

---

<div class="post-metadata">

**Author:** ![djc](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/djc/32/1592_2.png) [@djc](https://internals.rust-lang.org/u/djc)\
**Post date:** [March 31, 2019, 1:34pm UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/6 "2019-03-31T13:34:58Z")

</div>

See also [https://github.com/rust-lang-nursery/api-guidelines/issues/111](https://github.com/rust-lang-nursery/api-guidelines/issues/111).

---

<div class="post-metadata">

**Author:** ![RalfJung](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/ralfjung/32/2415_2.png) [@RalfJung](https://internals.rust-lang.org/u/RalfJung)\
**Post date:** [April 8, 2019, 1:44pm UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/7 "2019-04-08T13:44:32Z")

</div>

Looks to me more like the error message shouldn’t quote local names used in another library, at least not without any context. (So, I agree with @CAD97 and @mark-i-m ).

---

<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:** [July 7, 2019, 1:58pm UTC](https://internals.rust-lang.org/t/should-libstd-use-descriptive-names-for-type-parameters/9742/8 "2019-07-07T13:58:23Z")

</div>

Closed on July 7, 2019, 1:58pm UTC

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