Skip to content

Commit f026f04

Browse files
committed
Switch to "Guide-level" and "Reference-level" explanations
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.
1 parent b48970a commit f026f04

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

0000-template.md

+15-14
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,28 @@ One para explanation of the feature.
1313

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

16-
# Detailed design
17-
[design]: #detailed-design
16+
# Guide-level explanation
17+
[guide-level-explanation]: #guide-level-explanation
1818

19-
This is the bulk of the RFC. Explain the design in enough detail for somebody familiar
20-
with the language to understand, and for somebody familiar with the compiler to implement.
21-
This should get into specifics and corner-cases, and include examples of how the feature is used.
19+
Explain the proposal as if it was already included in the language and you were teaching it to another Rust programmer. That generally means:
2220

23-
# How We Teach This
24-
[how-we-teach-this]: #how-we-teach-this
21+
- Introducing new named concepts.
22+
- Explaining the feature largely in terms of examples.
23+
- 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.
24+
- If applicable, provide sample error messages, deprecation warnings, or migration guidance.
2525

26-
What names and terminology work best for these concepts and why?
27-
How is this idea best presented—as a continuation of existing Rust patterns, or as a wholly new one?
26+
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.
2827

29-
Would the acceptance of this proposal change how Rust is taught to new users at any level?
30-
How should this feature be introduced and taught to existing Rust users?
28+
# Reference-level explanation
29+
[reference-level-explanation]: #reference-level-explanation
3130

32-
What additions or changes to the Rust Reference, _The Rust Programming Language_, and/or _Rust by Example_ does it entail?
31+
This is the technical portion of the RFC. Explain the design in sufficient detail that:
3332

34-
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?
33+
- Its interaction with other features is clear.
34+
- It is reasonably clear how the feature would be implemented.
35+
- Corner cases are dissected by example.
3536

36-
What's an example that would show off this feature?
37+
The section should return to the examples given in the previous section, and explain more fully how the detailed proposal makes those examples work.
3738

3839
# Drawbacks
3940
[drawbacks]: #drawbacks

0 commit comments

Comments
 (0)