lilliput_core/config/
float.rs1pub use lilliput_float::PackedFloatValidator;
2
3use super::PackingMode;
4
5#[derive(Default, Clone, PartialEq, Debug)]
7pub struct PackedFloatValidation {
8 pub f32: PackedFloatValidator<f32>,
10 pub f64: PackedFloatValidator<f64>,
12}
13
14impl PackedFloatValidation {
15 pub fn with_f32(mut self, validator: PackedFloatValidator<f32>) -> Self {
17 self.f32 = validator;
18 self
19 }
20
21 pub fn with_f64(mut self, validator: PackedFloatValidator<f64>) -> Self {
23 self.f64 = validator;
24 self
25 }
26
27 pub fn with_relative(self, max_eps: f64) -> Self {
29 self.with_f32(PackedFloatValidator::Relative(max_eps as f32))
30 .with_f64(PackedFloatValidator::Relative(max_eps))
31 }
32
33 pub fn with_absolute(self, max_eps: f64) -> Self {
35 self.with_f32(PackedFloatValidator::Absolute(max_eps as f32))
36 .with_f64(PackedFloatValidator::Absolute(max_eps))
37 }
38}
39
40#[cfg_attr(any(test, feature = "testing"), derive(proptest_derive::Arbitrary))]
42#[derive(Default, Clone, PartialEq, Debug)]
43pub struct FloatEncoderConfig {
44 pub packing: PackingMode,
46 #[cfg_attr(
47 any(test, feature = "testing"),
48 proptest(value = "PackedFloatValidation::default()")
49 )]
50 pub validation: PackedFloatValidation,
52}
53
54impl FloatEncoderConfig {
55 pub fn with_packing(mut self, packing: PackingMode) -> Self {
57 self.packing = packing;
58 self
59 }
60
61 pub fn with_validation(mut self, validation: PackedFloatValidation) -> Self {
63 self.validation = validation;
64 self
65 }
66}