Skip to content

A "Design FAQ" document #4047

Closed
Closed
@bstrie

Description

@bstrie

In the vein of the Project FAQ and the Language FAQ.

In addition to being really interesting, this would save a lot of time and divert a lot of potential questions in the long run. Some topics to discuss:

  • Why was typestate removed?
  • Why are some types nominal instead of structural?
  • Why do I have to declare impls in the same crate as a type or trait?
  • Why is trait inheritance the only means of inheritance?
  • Why doesn't Rust do tail-call optimization?
    (see e.g. rust-dev post.)

Explanations should be technical and include code examples wherever possible.

Some of the questions of this nature overlap with the latter half of the Language FAQ, but not all, e.g. "Can Rust code call C code?" and "What is the difference between a managed pointer and an owned pointer?" do not belong. The document should focus on large-scale design decisions and tradeoffs; think "Why split stacks?" rather than "How do split stacks work?".

If you think of good questions, add them in the comments here. There are probably a lot of ripe areas for explanation, especially with regard to mutability and regions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions