mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-06 03:44:14 +00:00
document that multiple yield in inline iterator cause code bloat (#10553)
* document that multiple `yield` in inline iterator cause code duplication * doc: rule `Start types with a capital T` was deprecated
This commit is contained in:
committed by
Andreas Rumpf
parent
824f39b32e
commit
2b30998159
@@ -67,8 +67,8 @@ Coding Guidelines
|
||||
* Max line length is 80 characters.
|
||||
* Provide spaces around binary operators if that enhances readability.
|
||||
* Use a space after a colon, but not before it.
|
||||
* Start types with a capital ``T``, unless they are pointers/references which
|
||||
start with ``P``.
|
||||
* [deprecated] Start types with a capital ``T``, unless they are
|
||||
pointers/references which start with ``P``.
|
||||
|
||||
See also the `API naming design <apis.html>`_ document.
|
||||
|
||||
|
||||
@@ -3870,7 +3870,14 @@ First class iterators
|
||||
There are 2 kinds of iterators in Nim: *inline* and *closure* iterators.
|
||||
An `inline iterator`:idx: is an iterator that's always inlined by the compiler
|
||||
leading to zero overhead for the abstraction, but may result in a heavy
|
||||
increase in code size. Inline iterators are second class citizens;
|
||||
increase in code size.
|
||||
|
||||
Caution: the body of a for loop over an inline iterator is inlined into
|
||||
each ``yield`` statement appearing in the iterator code,
|
||||
so ideally the code should be refactored to contain a single yield when possible
|
||||
to avoid code bloat.
|
||||
|
||||
Inline iterators are second class citizens;
|
||||
They can be passed as parameters only to other inlining code facilities like
|
||||
templates, macros and other inline iterators.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user