pub struct CardResponseV1 {
pub schema_version: u32,
pub kind: &'static str,
pub zero_distance: f64,
pub bc_for_solve: f64,
pub bc_ladder: Option<CardBcLadderV1>,
pub units: CardUnitsBlockV1,
pub wind_speeds: Vec<f64>,
pub wind_angles_deg: Vec<f64>,
pub rows: Vec<CardRowV1>,
pub extra_angle_rows: Vec<Vec<CardRowV1>>,
pub truncation: Option<CardTruncationV1>,
}Fields§
§schema_version: u32§kind: &'static str§zero_distance: f64§bc_for_solve: f64The scalar BC fed to the zero solve and every sampled flight: the request’s published
ballistic_coefficient, or, when bc5d_table_path generated a ladder, that BC with
the table’s muzzle-velocity correction applied.
With no Self::bc_ladder it is the BC every row flew, and the printed footer’s
BC:. With a bc_ladder it is only the interior-gap fallback: it flies only where
bc_ladder.interior_gap allows, and never under a gapless ladder (every ladder a
correction table builds), so it must not be presented as the card’s BC (MBA-1601).
bc_ladder: Option<CardBcLadderV1>The BC ladder these rows flew, present only when one fed the solve: the request’s
bc_segments, or the ladder its bc5d_table_path generated (MBA-1601).
Additive and absent on every card without a ladder, so those responses are
byte-identical to before. A saved card has to be able to state the BCs its numbers
came from long after the correction table has been replaced on disk, and under a
ladder bc_for_solve alone does not do that.
units: CardUnitsBlockV1§wind_speeds: Vec<f64>Wind card only: the swept speeds, one per wind_columns entry.
wind_angles_deg: Vec<f64>Wind card only: one block of rows per wind angle.
rows: Vec<CardRowV1>§extra_angle_rows: Vec<Vec<CardRowV1>>Wind card with multiple angles: rows for angles beyond the first.
truncation: Option<CardTruncationV1>Present ONLY when the solved flight stopped short of the rows requested, in which case
rows holds every row it did reach and nothing past them (MBA-1476 follow-up).
Additive and absent on every card that ran to its requested end, so a caller reading
an untruncated card sees byte-identical JSON to before. It is a field rather than only
a log line because the apps and the Flask layer consume this shape: a card that quietly
returns fewer rows than were asked for, with nothing on the response saying so, is the
same class of silent failure as the substituted row this work removed.
Trait Implementations§
Source§impl Clone for CardResponseV1
impl Clone for CardResponseV1
Source§fn clone(&self) -> CardResponseV1
fn clone(&self) -> CardResponseV1
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CardResponseV1
impl Debug for CardResponseV1
Auto Trait Implementations§
impl Freeze for CardResponseV1
impl RefUnwindSafe for CardResponseV1
impl Send for CardResponseV1
impl Sync for CardResponseV1
impl Unpin for CardResponseV1
impl UnwindSafe for CardResponseV1
Blanket Implementations§
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<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.