Skip to content

Associated types rollup #20490

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 31 commits into from
Jan 4, 2015
Merged

Associated types rollup #20490

merged 31 commits into from
Jan 4, 2015

Conversation

japaric
Copy link
Member

@japaric japaric commented Jan 3, 2015

closes #20486
closes #20474
closes #20441

[breaking-change]

The Index[Mut] traits now have one less input parameter, as the return type of the indexing operation is an associated type. This breaks all existing implementations.


binop traits (Add, Sub, etc) now have an associated type for their return type. Also, the RHS input parameter now defaults to Self (except for the Shl and Shr traits). For example, the Add trait now looks like this:

trait Add<Rhs=Self> {
    type Output;

    fn add(self, Rhs) -> Self::Output;
}

The Neg and Not traits now also have an associated type for their return type.

This breaks all existing implementations of these traits.


Affected traits:

  • Iterator { type Item }
  • IteratorExt no input/output types, uses <Self as Iterator>::Item in its methods
  • DoubleEndedIterator no input/output types, uses <Self as Iterator>::Item in its methods
  • DoubleEndedIteratorExt no input/output types, uses <Self as Iterator>::Item in its methods
  • RandomAccessIterator no input/output types
  • ExactSizeIterator no input/output types, uses <Self as Iterator>::Item in its methods

This breaks all the implementations of these traits.

@rust-highfive
Copy link
Contributor

r? @nikomatsakis

(rust_highfive has picked a reviewer for you, use r? to override)

bors added a commit that referenced this pull request Jan 4, 2015
closes #20486 
closes #20474 
closes #20441

[breaking-change]

The `Index[Mut]` traits now have one less input parameter, as the return type of the indexing operation is an associated type. This breaks all existing implementations.

---

binop traits (`Add`, `Sub`, etc) now have an associated type for their return type. Also, the RHS input parameter now defaults to `Self` (except for the `Shl` and `Shr` traits). For example, the `Add` trait now looks like this:

``` rust
trait Add<Rhs=Self> {
    type Output;

    fn add(self, Rhs) -> Self::Output;
}
```

The `Neg` and `Not` traits now also have an associated type for their return type.

This breaks all existing implementations of these traits.

---
Affected traits:

- `Iterator { type Item }`
- `IteratorExt` no input/output types, uses `<Self as Iterator>::Item` in its methods
- `DoubleEndedIterator` no input/output types, uses `<Self as Iterator>::Item` in its methods
- `DoubleEndedIteratorExt` no input/output types, uses `<Self as Iterator>::Item` in its methods
- `RandomAccessIterator` no input/output types
- `ExactSizeIterator` no input/output types, uses `<Self as Iterator>::Item` in its methods

This breaks all the implementations of these traits.
@bors bors merged commit ce8f748 into rust-lang:master Jan 4, 2015
@alexcrichton
Copy link
Member

💯

@luqmana
Copy link
Member

luqmana commented Jan 4, 2015

\o/

@Centril Centril added the rollup A PR which is a rollup label Oct 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants