pub struct AdaptiveRequest<'a> {
pub domain_m: (f64, f64),
pub anchors_m: Vec<f64>,
pub budget: AdaptiveBudget,
pub max_rows: usize,
pub click: Option<(&'a ClickValue, &'a ClickValue)>,
pub elevation_cf: f64,
pub windage_cf: f64,
pub bias_mil: f64,
}Expand description
Everything one adaptive card needs beyond the solved curve itself.
elevation_cf / windage_cf are the scope’s tracking correction factors (MBA-1358).
Both are VALIDATED here against crate::adjustment::tracking_cf_in_range’s locked
(0.5, 1.5) band and rejected with CardError::InvalidTrackingCf – this is a public
library API that language bindings call without the CLI’s own validation, and an
out-of-band CF fails silently rather than loudly. Enforced as a hard bound here, unlike
crate::optic::OpticError::NonPositiveTrackingFactor’s advisory-only band (see its own
doc comment): the card engine enforces it because a large finite CF here would otherwise
produce a confident budget_met: true on a card that does not actually meet its stated
error budget, while the planner does not, because its residual stays honest under a wild
CF. bias_mil is the selected zero set’s elevation dial
correction (MBA-1360) in true angular mil; it applies to the ELEVATION axis only, which
is what “zero-set bias as a drop-equivalent” means.
Fields§
§domain_m: (f64, f64)(start, end) in meters. Both must be finite, positive, and increasing.
anchors_m: Vec<f64>Ranges that must appear as rows whatever the error says (a known dope point, a target distance). Validated into the domain, never silently dropped.
budget: AdaptiveBudget§max_rows: usizeUpper bound on printed rows. The mandatory seed (both domain ends plus every anchor)
is never truncated to honour it – see AdaptiveCardReportV1::rows_capped.
click: Option<(&'a ClickValue, &'a ClickValue)>(elevation, windage) turret graduations. Some snaps every printed row onto the
detent lattice, which is what a shooter can actually dial; None prints the
unrounded angle.
elevation_cf: f64§windage_cf: f64§bias_mil: f64Trait Implementations§
Source§impl<'a> Clone for AdaptiveRequest<'a>
impl<'a> Clone for AdaptiveRequest<'a>
Source§fn clone(&self) -> AdaptiveRequest<'a>
fn clone(&self) -> AdaptiveRequest<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<'a> Freeze for AdaptiveRequest<'a>
impl<'a> RefUnwindSafe for AdaptiveRequest<'a>
impl<'a> Send for AdaptiveRequest<'a>
impl<'a> Sync for AdaptiveRequest<'a>
impl<'a> Unpin for AdaptiveRequest<'a>
impl<'a> UnsafeUnpin for AdaptiveRequest<'a>
impl<'a> UnwindSafe for AdaptiveRequest<'a>
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,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.