pub struct PriceAnnotation {
pub kind: PriceKind,
pub amount: Option<IncompleteAmount>,
}Expand description
Price annotation for a posting (@ or @@).
Factored along its two orthogonal axes (#1167):
kind: per-unit (@) vs total (@@)amount: present (possibly with missing number or currency that interpolation will fill) vs absent (the bare@/@@sigil without any amount)
Pre-#1167 these axes were flattened into a 6-variant enum
(Unit/Total/UnitIncomplete/TotalIncomplete/UnitEmpty/TotalEmpty),
which forced every consumer to write six match arms even when only
one axis mattered.
Fields§
§kind: PriceKindPer-unit (@) or total (@@).
amount: Option<IncompleteAmount>The price amount, or None for the bare-sigil form.
IncompleteAmount::Complete indicates the parser saw a full
number+currency; the other variants indicate one of those
pieces was elided and will be filled by interpolation.
Implementations§
Source§impl PriceAnnotation
impl PriceAnnotation
Sourcepub const fn unit_incomplete(amount: IncompleteAmount) -> Self
pub const fn unit_incomplete(amount: IncompleteAmount) -> Self
Per-unit (@) price with an incomplete amount.
Sourcepub const fn total_incomplete(amount: IncompleteAmount) -> Self
pub const fn total_incomplete(amount: IncompleteAmount) -> Self
Total (@@) price with an incomplete amount.
Sourcepub const fn unit_empty() -> Self
pub const fn unit_empty() -> Self
Bare per-unit sigil (@) with no amount.
Sourcepub const fn total_empty() -> Self
pub const fn total_empty() -> Self
Bare total sigil (@@) with no amount.
Trait Implementations§
Source§impl Archive for PriceAnnotation
impl Archive for PriceAnnotation
Source§const COPY_OPTIMIZATION: CopyOptimization<Self>
const COPY_OPTIMIZATION: CopyOptimization<Self>
An optimization flag that allows the bytes of this type to be copied
directly to a writer instead of calling
serialize. Read moreSource§type Archived = ArchivedPriceAnnotation
type Archived = ArchivedPriceAnnotation
The archived representation of this type. Read more
Source§type Resolver = PriceAnnotationResolver
type Resolver = PriceAnnotationResolver
The resolver for this type. It must contain all the additional
information from serializing needed to make the archived type from
the normal type.
Source§impl Clone for PriceAnnotation
impl Clone for PriceAnnotation
Source§fn clone(&self) -> PriceAnnotation
fn clone(&self) -> PriceAnnotation
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PriceAnnotation
impl Debug for PriceAnnotation
Source§impl<'de> Deserialize<'de> for PriceAnnotation
impl<'de> Deserialize<'de> for PriceAnnotation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<__D: Fallible + ?Sized> Deserialize<PriceAnnotation, __D> for Archived<PriceAnnotation>where
PriceKind: Archive,
<PriceKind as Archive>::Archived: Deserialize<PriceKind, __D>,
Option<IncompleteAmount>: Archive,
<Option<IncompleteAmount> as Archive>::Archived: Deserialize<Option<IncompleteAmount>, __D>,
impl<__D: Fallible + ?Sized> Deserialize<PriceAnnotation, __D> for Archived<PriceAnnotation>where
PriceKind: Archive,
<PriceKind as Archive>::Archived: Deserialize<PriceKind, __D>,
Option<IncompleteAmount>: Archive,
<Option<IncompleteAmount> as Archive>::Archived: Deserialize<Option<IncompleteAmount>, __D>,
Source§fn deserialize(
&self,
deserializer: &mut __D,
) -> Result<PriceAnnotation, <__D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut __D, ) -> Result<PriceAnnotation, <__D as Fallible>::Error>
Deserializes using the given deserializer
Source§impl Display for PriceAnnotation
impl Display for PriceAnnotation
impl Eq for PriceAnnotation
Source§impl PartialEq for PriceAnnotation
impl PartialEq for PriceAnnotation
Source§fn eq(&self, other: &PriceAnnotation) -> bool
fn eq(&self, other: &PriceAnnotation) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl Serialize for PriceAnnotation
impl Serialize for PriceAnnotation
Source§impl ShiftSpans for PriceAnnotation
impl ShiftSpans for PriceAnnotation
impl StructuralPartialEq for PriceAnnotation
Auto Trait Implementations§
impl Freeze for PriceAnnotation
impl RefUnwindSafe for PriceAnnotation
impl Send for PriceAnnotation
impl Sync for PriceAnnotation
impl Unpin for PriceAnnotation
impl UnsafeUnpin for PriceAnnotation
impl UnwindSafe for PriceAnnotation
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
Source§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
The archived counterpart of this type. Unlike
Archive, it may be
unsized. Read moreSource§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Creates the archived version of the metadata for this value.
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.