Struct ValueShape
pub struct ValueShape { /* private fields */ }Description
Exact, storage-independent shape of one mathematical value.
Extents are ordered and positive. The empty extent list denotes a scalar,
so a one-component vector ([1]) remains distinct from a scalar ([]).
This type describes mathematical components only: mesh entities, basis
functions, quadrature points, and memory strides belong to realization.
Implementations§
§impl ValueShape
impl ValueShape
pub fn new(
extents: impl IntoIterator<Item = u32>,
) -> Result<ValueShape, InvalidValueShape>
pub fn new( extents: impl IntoIterator<Item = u32>, ) -> Result<ValueShape, InvalidValueShape>
Construct an exact tensor shape from positive portable extents.
§Errors
Returns InvalidValueShape at the first zero extent.
pub fn extents(&self) -> &[NonZero<u32>]
pub fn extents(&self) -> &[NonZero<u32>]
Ordered canonical extents. An empty slice denotes a scalar.
pub const fn is_scalar(&self) -> bool
pub const fn is_scalar(&self) -> bool
Whether this is the exact scalar shape [].
pub fn component_count(&self) -> Option<usize>
pub fn component_count(&self) -> Option<usize>
Number of scalar components, when representable on this target.
A scalar has one component. This is value shape only; callers must separately account for spatial or temporal discretization cardinality.
pub fn appended(&self, extent: u32) -> Result<ValueShape, InvalidValueShape>
pub fn appended(&self, extent: u32) -> Result<ValueShape, InvalidValueShape>
Append one positive extent while preserving exact axis order.
§Errors
Returns InvalidValueShape when extent is zero.
pub fn remove_last(&self) -> Option<(ValueShape, NonZero<u32>)>
pub fn remove_last(&self) -> Option<(ValueShape, NonZero<u32>)>
Remove and return the trailing extent.
A scalar has no trailing extent and therefore returns None.
Trait Implementations§
§impl Clone for ValueShape
impl Clone for ValueShape
§impl Debug for ValueShape
impl Debug for ValueShape
§impl Default for ValueShape
impl Default for ValueShape
§fn default() -> ValueShape
fn default() -> ValueShape
§impl Hash for ValueShape
impl Hash for ValueShape
§fn hash<__H>(&self, state: &mut __H)where
__H: Hasher,
fn hash<__H>(&self, state: &mut __H)where
__H: Hasher,
§impl Ord for ValueShape
impl Ord for ValueShape
§fn cmp(&self, other: &ValueShape) -> Ordering
fn cmp(&self, other: &ValueShape) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
§impl PartialEq for ValueShape
impl PartialEq for ValueShape
§fn eq(&self, other: &ValueShape) -> bool
fn eq(&self, other: &ValueShape) -> bool
self and other values to be equal, and is used by ==.§impl PartialOrd for ValueShape
impl PartialOrd for ValueShape
§fn partial_cmp(&self, other: &ValueShape) -> Option<Ordering>
fn partial_cmp(&self, other: &ValueShape) -> Option<Ordering>
1.0.0 (const: unstable) · Source§fn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
1.0.0 (const: unstable) · Source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
1.0.0 (const: unstable) · Source§fn gt(&self, other: &Rhs) -> bool
fn gt(&self, other: &Rhs) -> bool
impl Eq for ValueShape
impl StructuralPartialEq for ValueShape
Auto Trait Implementations§
impl Freeze for ValueShape
impl RefUnwindSafe for ValueShape
impl Send for ValueShape
impl Sync for ValueShape
impl Unpin for ValueShape
impl UnsafeUnpin for ValueShape
impl UnwindSafe for ValueShape
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Qwhere
Q: Ord + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Comparable<K> for Qwhere
Q: Ord + ?Sized,
K: Borrow<Q> + ?Sized,
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Source§impl<T> From<T> for T
impl<T> From<T> for T
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
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>
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>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
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§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.