Skip to content

Commit

Permalink
Switch to "Guide-level" and "Reference-level" explanations
Browse files Browse the repository at this point in the history
As proposed by aturon <3

These sections replace the "Detailed design" and "How do we teach this?"
sections, and switch their order.

Instead of describing how we would teach a change as a result of a
proposal, the "Guide-level explanation" section will actually attempt to
teach the reader the feature, in a lightweight way.

The guide-level explanation appears first in order to help RFC writers
keep Rust users in the front of their minds, and in order to help RFC
readers understand how an RFC will affect them sooner in the RFC. This
will hopefully make the RFC process more accessible to people who are
Rust users but not compiler or language design experts.
  • Loading branch information
carols10cents committed Jul 12, 2017
1 parent 5d6d405 commit a7a3415
Showing 1 changed file with 15 additions and 14 deletions.
29 changes: 15 additions & 14 deletions 0000-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,28 @@ One para explanation of the feature.

Why are we doing this? What use cases does it support? What is the expected outcome?

# How We Teach This
[how-we-teach-this]: #how-we-teach-this
# Guide-level explanation
[guide-level-explanation]: #guide-level-explanation

What names and terminology work best for these concepts and why?
How is this idea best presented—as a continuation of existing Rust patterns, or as a wholly new one?
Explain the proposal as if it was already included in the language and you were teaching it to another Rust programmer. That generally means:

Would the acceptance of this proposal change how Rust is taught to new users at any level?
How should this feature be introduced and taught to existing Rust users?
- Introducing new named concepts.
- Explaining the feature largely in terms of examples.
- Explaining how Rust programmers should *think* about the feature, and how it should impact the way they use Rust. It should explain the impact as concretely as possible.
- If applicable, provide sample error messages, deprecation warnings, or migration guidance.

What additions or changes to the Rust Reference, _The Rust Programming Language_, and/or _Rust by Example_ does it entail?
For implementation-oriented RFCs (e.g. for compiler internals), this section should focus on how compiler contributors should think about the change, and give examples of its concrete impact. For policy RFCs, this section should provide an example-driven introduction to the policy, and explain its impact in concrete terms.

What would an outline of a new section in the book look like? What should the reader be able to understand by the end of the section in the book?
# Reference-level explanation
[reference-level-explanation]: #reference-level-explanation

What's an example that would show off this feature?
This is the technical portion of the RFC. Explain the design in sufficient detail that:

# Detailed design
[design]: #detailed-design
- Its interaction with other features is clear.
- It is reasonably clear how the feature would be implemented.
- Corner cases are dissected by example.

This is the bulk of the RFC. Explain the design in enough detail for somebody familiar
with the language to understand, and for somebody familiar with the compiler to implement.
This should get into specifics and corner-cases, and include examples of how the feature is used.
The section should return to the examples given in the previous section, and explain more fully how the detailed proposal makes those examples work.

# Drawbacks
[drawbacks]: #drawbacks
Expand Down

0 comments on commit a7a3415

Please sign in to comment.