Expand description
Wraps the value to [minimum, minimum + range)
Examples
use com_croftsoft_core::math::math_lib::*;
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: -190.0,
}.calculate().unwrap(),
170.0);
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: 190.0,
}.calculate().unwrap(),
-170.0);
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: 180.0,
}.calculate().unwrap(),
-180.0);
assert_eq!(
Wrap {
minimum: f64::MAX,
range: 360.0,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::FloatResolution(
WrapErrorFloatResolution::DeltaIsNegativeMinimum));
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: f64::MAX,
}.calculate().unwrap_err(),
WrapError::FloatResolution(
WrapErrorFloatResolution::DeltaIsValue));
assert_eq!(
Wrap {
minimum: f64::INFINITY,
range: 360.0,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::MinimumIsInfinite(f64::INFINITY)));
assert_eq!(
Wrap {
minimum: f64::NEG_INFINITY,
range: 360.0,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::MinimumIsInfinite(f64::NEG_INFINITY)));
assert_eq!(
Wrap {
minimum: f64::NAN,
range: 360.0,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::MinimumIsNotANumber));
assert_eq!(
Wrap {
minimum: -180.0,
range: f64::INFINITY,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::RangeIsInfinite(f64::INFINITY)));
assert_eq!(
Wrap {
minimum: -180.0,
range: f64::NEG_INFINITY,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::RangeIsInfinite(f64::NEG_INFINITY)));
assert_eq!(
Wrap {
minimum: -180.0,
range: -360.0,
value: 180.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::RangeIsNonPositive(-360.0)));
assert_eq!(
Wrap {
minimum: -180.0,
range: f64::NAN,
value: 190.0,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::RangeIsNotANumber));
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: f64::INFINITY,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::ValueIsInfinite(f64::INFINITY)));
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: f64::NEG_INFINITY,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::ValueIsInfinite(f64::NEG_INFINITY)));
assert_eq!(
Wrap {
minimum: -180.0,
range: 360.0,
value: f64::NAN,
}.calculate().unwrap_err(),
WrapError::InvalidArgument(
WrapErrorInvalidArgument::ValueIsNotANumber));
Fields
minimum: f64
range: f64
value: f64
Implementations
Trait Implementations
impl StructuralPartialEq for Wrap
Auto Trait Implementations
impl RefUnwindSafe for Wrap
impl Send for Wrap
impl Sync for Wrap
impl Unpin for Wrap
impl UnwindSafe for Wrap
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more