# Enum ndarray::SliceOrIndex [−] [src]

```pub enum SliceOrIndex {
Slice {
start: isize,
end: Option<isize>,
step: isize,
},
Index(isize),
}```

A slice (range with step) or an index.

See also the `s![]` macro for a convenient way to create a `&SliceInfo<[SliceOrIndex; n], D>`.

## Examples

`SliceOrIndex::Index(a)` is the index `a`. It can also be created with `SliceOrIndex::from(a)`. The Python equivalent is `[a]`. The macro equivalent is `s![a]`.

`SliceOrIndex::Slice { start: 0, end: None, step: 1 }` is the full range of an axis. It can also be created with `SliceOrIndex::from(..)`. The Python equivalent is `[:]`. The macro equivalent is `s![..]`.

`SliceOrIndex::Slice { start: a, end: Some(b), step: 2 }` is every second element from `a` until `b`. It can also be created with `SliceOrIndex::from(a..b).step_by(2)`. The Python equivalent is `[a:b:2]`. The macro equivalent is `s![a..b;2]`.

`SliceOrIndex::Slice { start: a, end: None, step: -1 }` is every element, from `a` until the end, in reverse order. It can also be created with `SliceOrIndex::from(a..).step_by(-1)`. The Python equivalent is `[a::-1]`. The macro equivalent is `s![a..;-1]`.

## Variants

A range with step size. Negative `begin` or `end` indexes are counted from the back of the axis. If `end` is `None`, the slice extends to the end of the axis.

### Fields of `Slice`

 `start: isize` `end: Option` `step: isize`

A single index.

## Methods

### `impl SliceOrIndex`[src]

#### `fn is_slice(&self) -> bool`[src]

Returns `true` if `self` is a `Slice` value.

#### `fn is_index(&self) -> bool`[src]

Returns `true` if `self` is an `Index` value.

#### `fn step_by(self, step: isize) -> Self`[src]

Returns a new `SliceOrIndex` with the given step size (multiplied with the previous step size).

`step` must be nonzero. (This method checks with a debug assertion that `step` is not zero.)

## Trait Implementations

### `impl Debug for SliceOrIndex`[src]

#### `fn fmt(&self, __arg_0: &mut Formatter) -> Result`[src]

Formats the value using the given formatter.

### `impl PartialEq for SliceOrIndex`[src]

#### `fn eq(&self, __arg_0: &SliceOrIndex) -> bool`[src]

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

#### `fn ne(&self, __arg_0: &SliceOrIndex) -> bool`[src]

This method tests for `!=`.

### `impl Hash for SliceOrIndex`[src]

#### `fn hash<__H: Hasher>(&self, __arg_0: &mut __H)`[src]

Feeds this value into the given [`Hasher`]. Read more

#### `fn hash_slice<H>(data: &[Self], state: &mut H) where    H: Hasher, `1.3.0[src]

Feeds a slice of this type into the given [`Hasher`]. Read more

### `impl Clone for SliceOrIndex`[src]

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

Returns a copy of the value. Read more

#### `fn clone_from(&mut self, source: &Self)`1.0.0[src]

Performs copy-assignment from `source`. Read more

### `impl Display for SliceOrIndex`[src]

#### `fn fmt(&self, f: &mut Formatter) -> Result`[src]

Formats the value using the given formatter. Read more

### `impl From<Slice> for SliceOrIndex`[src]

#### `fn from(s: Slice) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<isize> for SliceOrIndex`[src]

#### `fn from(r: isize) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<Range<isize>> for SliceOrIndex`[src]

#### `fn from(r: Range<isize>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeFrom<isize>> for SliceOrIndex`[src]

#### `fn from(r: RangeFrom<isize>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeTo<isize>> for SliceOrIndex`[src]

#### `fn from(r: RangeTo<isize>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<usize> for SliceOrIndex`[src]

#### `fn from(r: usize) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<Range<usize>> for SliceOrIndex`[src]

#### `fn from(r: Range<usize>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeFrom<usize>> for SliceOrIndex`[src]

#### `fn from(r: RangeFrom<usize>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeTo<usize>> for SliceOrIndex`[src]

#### `fn from(r: RangeTo<usize>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<i32> for SliceOrIndex`[src]

#### `fn from(r: i32) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<Range<i32>> for SliceOrIndex`[src]

#### `fn from(r: Range<i32>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeFrom<i32>> for SliceOrIndex`[src]

#### `fn from(r: RangeFrom<i32>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeTo<i32>> for SliceOrIndex`[src]

#### `fn from(r: RangeTo<i32>) -> SliceOrIndex`[src]

Performs the conversion.

### `impl From<RangeFull> for SliceOrIndex`[src]

#### `fn from(_: RangeFull) -> SliceOrIndex`[src]

Performs the conversion.