std.range.Take/take  - multiple declarations
				Function take
Lazily takes only up to n elements of a range. This is
particularly useful when using with infinite ranges.
						
					
				Unlike takeExactly, take does not require that there
are n or more elements in input. As a consequence, length
information is not applied to the result unless input also has
length information.
Parameters
| Name | Description | 
|---|---|
| input | an input range
    to iterate over up to ntimes | 
| n | the number of elements to take | 
Returns
At minimum, an input range. If the range offers random access
    and length, take offers them as well.
Example
import stdExample
If the range runs out before n elements, take simply returns the entire
 range (unlike takeExactly, which will cause an assertion failure if
 the range ends prematurely):
import stdAlias/Struct Take
Lazily takes only up to n elements of a range. This is
particularly useful when using with infinite ranges.
						
				struct Take(Range)
				
				  
				
				if (isInputRange!(Unqual!Range) && !(!isInfinite!(Unqual!Range) && hasSlicing!(Unqual!Range) || is(Range T == Take!T)));
						
						
				alias Take(R)
				 = R;
						
					
				Unlike takeExactly, take does not require that there
are n or more elements in input. As a consequence, length
information is not applied to the result unless input also has
length information.
Struct Take
Fields
| Name | Type | Description | 
|---|---|---|
| source | CRC | User accessible in read and write | 
Properties
| Name | Type | Description | 
|---|---|---|
| back[get, set] | auto | Range primitives | 
| empty[get] | bool | Range primitives | 
| front[get, set] | auto | Range primitives | 
| length[get] | size_t | Range primitives | 
| maxLength[get] | size_t | Access to maximal length of the range. | 
| save[get] | Take | Range primitives | 
Methods
| Name | Description | 
|---|---|
| moveAt(index) | Range primitives | 
| moveBack() | Range primitives | 
| moveFront() | Range primitives | 
| opIndex(index) | Range primitives | 
| opIndexAssign(v, index) | Range primitives | 
| opSlice(i, j) | Range primitives | 
| popBack() | Range primitives | 
| popFront() | Range primitives | 
Aliases
| Name | Description | 
|---|---|
| opDollar | Range primitives | 
Alias Take
Parameters
| Name | Description | 
|---|---|
| input | an input range
    to iterate over up to ntimes | 
| n | the number of elements to take | 
Returns
At minimum, an input range. If the range offers random access
    and length, take offers them as well.
Example
import stdExample
If the range runs out before n elements, take simply returns the entire
 range (unlike takeExactly, which will cause an assertion failure if
 the range ends prematurely):
import stdAuthors
Andrei Alexandrescu, David Simcha, Jonathan M Davis, and Jack Stouffer. Credit for some of the ideas in building this module goes to Leonardo Maffi.