StoredCardResponseV1

Struct StoredCardResponseV1 

Source
pub struct StoredCardResponseV1 {
    pub kind: String,
    pub units: StoredCardUnitsBlockV1,
    pub rows: Vec<StoredCardRowV1>,
    pub schema_version: Option<u32>,
    pub zero_distance: Option<f64>,
    pub bc_for_solve: Option<f64>,
    pub wind_speeds: Vec<f64>,
    pub wind_angles_deg: Vec<f64>,
    pub extra_angle_rows: Vec<Vec<StoredCardRowV1>>,
}
Expand description

A stored CardResponseV1, as a deserializable mirror.

CardResponseV1 is Serialize only (and its units block holds &'static strs), so a stored response is read back through this twin. It accepts the response document unchanged, field for field: kind and units are load-bearing here — they say what the rows ARE and what a row MEANS — while the descriptive scalars are optional so a card stored by an older engine still prints.

Deliberately NOT deny_unknown_fields (unlike CardRequestV1, where the caller really is the author of the document). What arrives here is this engine’s own output, round-tripped through an app’s storage — never hand-written input — so strictness buys no validation and costs a hard cross-version break: the FIRST field ever added to CardResponseV1 would make every card saved by the newer platform completely unexportable on the older one. The two apps carry independent engine pins and ship through separate stores, so that staggering is the normal case, not a downgrade. An unknown field is therefore ignored, exactly as the apps’ own decoders ignore it, and the stored cells still reach the paper. The same reasoning applies to StoredCardUnitsBlockV1 and StoredCardRowV1 below.

Fields§

§kind: String

Which card this is. Anything but PDF_CARD_KIND is refused.

§units: StoredCardUnitsBlockV1

Column labels and the range unit of the stored rows. The printed headings are these, not the request’s, because these are what the rows were computed in.

§rows: Vec<StoredCardRowV1>

The rows to print, in order.

§schema_version: Option<u32>§zero_distance: Option<f64>§bc_for_solve: Option<f64>

The BC the stored rows were computed with; printed in the footer. Absent (a card saved by an engine before CardResponseV1::bc_for_solve existed) falls back to the request’s published ballistic_coefficient.

§wind_speeds: Vec<f64>

Present only on a wind card, and therefore a refusal here.

§wind_angles_deg: Vec<f64>§extra_angle_rows: Vec<Vec<StoredCardRowV1>>

Trait Implementations§

Source§

impl Clone for StoredCardResponseV1

Source§

fn clone(&self) -> StoredCardResponseV1

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StoredCardResponseV1

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for StoredCardResponseV1

Source§

fn default() -> StoredCardResponseV1

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for StoredCardResponseV1

Source§

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 PartialEq for StoredCardResponseV1

Source§

fn eq(&self, other: &StoredCardResponseV1) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for StoredCardResponseV1

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,