Files
carbon-lang/docs/design/generics
89a829b8c7 Constraints for generics (generics details 3) (#818)
This proposal describes `where` clauses that can add constraints on a type-of-type, for example define restrictions on its associated types. Example:

```
fn FindFirstPrime[T:! Container where .Element = i32]
    (c: T) -> Optional(i32) {
  // The elements of `c` have type `T.Element`, which is `i32`.
  ...
}

fn PrintContainer[T:! Container where .Element is Printable](c: T) {
  // The type of the elements of `c` is not known, but we do know
  // that type satisfies the `Printable` interface.
  ...
}
```

Some other constraints, such as `Sized` are defined as type-of-types directly, possibly parameterized.

Co-authored-by: Richard Smith <richard@metafoo.co.uk>
Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2021-10-29 20:32:22 -07:00
..

Generics

This directory contains the collection of documents describing the generics feature of Carbon:

  • Overview - A high-level description of the generics design, with pointers to other design documents that dive deeper into individual topics.
  • Goals - The motivation and principles guiding the design direction.
  • Terminology - A glossary establishing common terminology for describing the design.
  • Detailed design - In depth description of how generic type parameters work.
  • Rejected alternatives - not implemented yet