pub struct SliceInfo<T, Din, Dout>{
in_dim: PhantomData<Din>,
out_dim: PhantomData<Dout>,
indices: T,
}
Expand description
Represents all of the necessary information to perform a slice.
The type T
is typically [SliceInfoElem; n]
, &[SliceInfoElem]
, or
Vec<SliceInfoElem>
. The type Din
is the dimension of the array to be
sliced, and Dout
is the output dimension after calling .slice()
. Note
that if Din
is a fixed dimension type (Ix0
, Ix1
, Ix2
, etc.), the
SliceInfo
instance can still be used to slice an array with dimension
IxDyn
as long as the number of axes matches.
Fields§
§in_dim: PhantomData<Din>
§out_dim: PhantomData<Dout>
§indices: T
Implementations§
Source§impl<T, Din, Dout> SliceInfo<T, Din, Dout>
impl<T, Din, Dout> SliceInfo<T, Din, Dout>
Sourcepub unsafe fn new(indices: T) -> Result<SliceInfo<T, Din, Dout>, ShapeError>
pub unsafe fn new(indices: T) -> Result<SliceInfo<T, Din, Dout>, ShapeError>
Returns a new SliceInfo
instance.
Errors if Din
or Dout
is not consistent with indices
.
For common types, a safe alternative is to use TryFrom
instead.
§Safety
The caller must ensure indices.as_ref()
always returns the same value
when called multiple times.
Trait Implementations§
Source§impl<T, Din, Dout> AsRef<[SliceInfoElem]> for SliceInfo<T, Din, Dout>
impl<T, Din, Dout> AsRef<[SliceInfoElem]> for SliceInfo<T, Din, Dout>
Source§fn as_ref(&self) -> &[SliceInfoElem]
fn as_ref(&self) -> &[SliceInfoElem]
Converts this type into a shared reference of the (usually inferred) input type.
Source§impl<'a, T, Din, Dout> From<&'a SliceInfo<T, Din, Dout>> for SliceInfo<&'a [SliceInfoElem], Din, Dout>
impl<'a, T, Din, Dout> From<&'a SliceInfo<T, Din, Dout>> for SliceInfo<&'a [SliceInfoElem], Din, Dout>
Source§impl<'a, Din, Dout> TryFrom<&'a [SliceInfoElem]> for SliceInfo<&'a [SliceInfoElem], Din, Dout>
impl<'a, Din, Dout> TryFrom<&'a [SliceInfoElem]> for SliceInfo<&'a [SliceInfoElem], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: &'a [SliceInfoElem],
) -> Result<SliceInfo<&'a [SliceInfoElem], Din, Dout>, ShapeError>
fn try_from( indices: &'a [SliceInfoElem], ) -> Result<SliceInfo<&'a [SliceInfoElem], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 0]> for SliceInfo<[SliceInfoElem; 0], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 0]> for SliceInfo<[SliceInfoElem; 0], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 0],
) -> Result<SliceInfo<[SliceInfoElem; 0], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 0], ) -> Result<SliceInfo<[SliceInfoElem; 0], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 1]> for SliceInfo<[SliceInfoElem; 1], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 1]> for SliceInfo<[SliceInfoElem; 1], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 1],
) -> Result<SliceInfo<[SliceInfoElem; 1], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 1], ) -> Result<SliceInfo<[SliceInfoElem; 1], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 2]> for SliceInfo<[SliceInfoElem; 2], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 2]> for SliceInfo<[SliceInfoElem; 2], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 2],
) -> Result<SliceInfo<[SliceInfoElem; 2], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 2], ) -> Result<SliceInfo<[SliceInfoElem; 2], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 3]> for SliceInfo<[SliceInfoElem; 3], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 3]> for SliceInfo<[SliceInfoElem; 3], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 3],
) -> Result<SliceInfo<[SliceInfoElem; 3], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 3], ) -> Result<SliceInfo<[SliceInfoElem; 3], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 4]> for SliceInfo<[SliceInfoElem; 4], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 4]> for SliceInfo<[SliceInfoElem; 4], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 4],
) -> Result<SliceInfo<[SliceInfoElem; 4], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 4], ) -> Result<SliceInfo<[SliceInfoElem; 4], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 5]> for SliceInfo<[SliceInfoElem; 5], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 5]> for SliceInfo<[SliceInfoElem; 5], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 5],
) -> Result<SliceInfo<[SliceInfoElem; 5], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 5], ) -> Result<SliceInfo<[SliceInfoElem; 5], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 6]> for SliceInfo<[SliceInfoElem; 6], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 6]> for SliceInfo<[SliceInfoElem; 6], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 6],
) -> Result<SliceInfo<[SliceInfoElem; 6], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 6], ) -> Result<SliceInfo<[SliceInfoElem; 6], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 7]> for SliceInfo<[SliceInfoElem; 7], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 7]> for SliceInfo<[SliceInfoElem; 7], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 7],
) -> Result<SliceInfo<[SliceInfoElem; 7], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 7], ) -> Result<SliceInfo<[SliceInfoElem; 7], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<[SliceInfoElem; 8]> for SliceInfo<[SliceInfoElem; 8], Din, Dout>
impl<Din, Dout> TryFrom<[SliceInfoElem; 8]> for SliceInfo<[SliceInfoElem; 8], Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: [SliceInfoElem; 8],
) -> Result<SliceInfo<[SliceInfoElem; 8], Din, Dout>, ShapeError>
fn try_from( indices: [SliceInfoElem; 8], ) -> Result<SliceInfo<[SliceInfoElem; 8], Din, Dout>, ShapeError>
Performs the conversion.
Source§impl<Din, Dout> TryFrom<Vec<SliceInfoElem>> for SliceInfo<Vec<SliceInfoElem>, Din, Dout>
impl<Din, Dout> TryFrom<Vec<SliceInfoElem>> for SliceInfo<Vec<SliceInfoElem>, Din, Dout>
Source§type Error = ShapeError
type Error = ShapeError
The type returned in the event of a conversion error.
Source§fn try_from(
indices: Vec<SliceInfoElem>,
) -> Result<SliceInfo<Vec<SliceInfoElem>, Din, Dout>, ShapeError>
fn try_from( indices: Vec<SliceInfoElem>, ) -> Result<SliceInfo<Vec<SliceInfoElem>, Din, Dout>, ShapeError>
Performs the conversion.
impl<T, Din, Dout> Copy for SliceInfo<T, Din, Dout>
Auto Trait Implementations§
impl<T, Din, Dout> Freeze for SliceInfo<T, Din, Dout>where
T: Freeze,
impl<T, Din, Dout> RefUnwindSafe for SliceInfo<T, Din, Dout>
impl<T, Din, Dout> Send for SliceInfo<T, Din, Dout>where
T: Send,
impl<T, Din, Dout> Sync for SliceInfo<T, Din, Dout>where
T: Sync,
impl<T, Din, Dout> Unpin for SliceInfo<T, Din, Dout>
impl<T, Din, Dout> UnwindSafe for SliceInfo<T, Din, Dout>
Blanket Implementations§
§impl<'short, T, Target> AsGeneralizedRef<'short, &'short Target> for T
impl<'short, T, Target> AsGeneralizedRef<'short, &'short Target> for T
fn as_generalized_ref(&'short self) -> &'short Target
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more