# [−][src]Trait core::iter::Step

    pub trait Step: Clone + PartialOrd + Sized {
        fn steps_between(start: &Self, end: &Self) -> Option<usize>;
        fn replace_one(&mut self) -> Self;
        fn replace_zero(&mut self) -> Self;
        fn add_one(&self) -> Self;
        fn sub_one(&self) -> Self;
        fn add_usize(&self, n: usize) -> Option<Self>;
    }

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Objects that can be stepped over in both directions.

The `steps_between` function provides a way to efficiently compare two `Step` objects.

## Required methods

### `fn steps_between(start: &Self, end: &Self) -> Option<usize>`

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Returns the number of steps between two step objects. The count is inclusive of `start` and exclusive of `end`.

Returns `None` if it is not possible to calculate `steps_between` without overflow.

### `fn replace_one(&mut self) -> Self`

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Replaces this step with `1`, returning itself

### `fn replace_zero(&mut self) -> Self`

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Replaces this step with `0`, returning itself

### `fn add_one(&self) -> Self`

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Adds one to this step, returning the result

### `fn sub_one(&self) -> Self`

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Subtracts one to this step, returning the result

### `fn add_usize(&self, n: usize) -> Option<Self>`

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Add an usize, returning None on overflow

Loading content...

## Implementors

### `impl Step for i8`[src]

#### `fn steps_between(start: &i8, end: &i8) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for i16`[src]

#### `fn steps_between(start: &i16, end: &i16) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for i32`[src]

#### `fn steps_between(start: &i32, end: &i32) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for i64`[src]

#### `fn steps_between(_start: &Self, _end: &Self) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for i128`[src]

#### `fn steps_between(_start: &Self, _end: &Self) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for isize`[src]

#### `fn steps_between(start: &isize, end: &isize) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for u8`[src]

#### `fn steps_between(start: &u8, end: &u8) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for u16`[src]

#### `fn steps_between(start: &u16, end: &u16) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for u32`[src]

#### `fn steps_between(start: &u32, end: &u32) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for u64`[src]

#### `fn steps_between(_start: &Self, _end: &Self) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for u128`[src]

#### `fn steps_between(_start: &Self, _end: &Self) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

### `impl Step for usize`[src]

#### `fn steps_between(start: &usize, end: &usize) -> Option<usize>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_usize(&self, n: usize) -> Option<Self>`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_one(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn replace_zero(&mut self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn add_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

#### `fn sub_one(&self) -> Self`[src]

🔬 This is a nightly-only experimental API. (`step_trait` #42168)

likely to be replaced by finer-grained traits

Loading content...

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)