pub struct TickPostProcessor {}Expand description
Post-processor that converts decimal values to tick values.
The TickPostProcessor converts decimal values to tick values based on a logarithmic
scale. This conversion can be useful for representing a wide range of values in a
compact form with consistent relative precision.
§Tick Formula
The conversion uses the formula:
tick = log(value) / log(1.0001) + 262144§Constraints
The resulting tick value must be within the range [1, 524287]. If the conversion yields a value outside this range, an error is returned.
§Examples
use bothan_lib::registry::post_processor::{PostProcessor, tick::TickPostProcessor};
use rust_decimal::Decimal;
// Create a tick convertor post-processor
let post_processor = PostProcessor::TickConvertor(TickPostProcessor {});
// Convert a decimal value to a tick value
let value = Decimal::new(20, 0); // The value 20.0
let result = post_processor.post_process(value).unwrap();
// The result will be approximately 292102.8Implementations§
Source§impl TickPostProcessor
impl TickPostProcessor
Sourcepub fn process(&self, data: Decimal) -> Result<Decimal, PostProcessError>
pub fn process(&self, data: Decimal) -> Result<Decimal, PostProcessError>
Converts a decimal value to its corresponding tick value.
This method applies the logarithmic conversion to transform a decimal value into a tick value. The tick value represents the position on a non-linear scale where each step corresponds to a 0.01% change in value.
§Errors
Returns a PostProcessError if the computed tick value is outside the range [1, 524287].
Trait Implementations§
Source§impl<'__de, __Context> BorrowDecode<'__de, __Context> for TickPostProcessor
impl<'__de, __Context> BorrowDecode<'__de, __Context> for TickPostProcessor
Source§fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>(
decoder: &mut __D,
) -> Result<Self, DecodeError>
fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>( decoder: &mut __D, ) -> Result<Self, DecodeError>
Source§impl Clone for TickPostProcessor
impl Clone for TickPostProcessor
Source§fn clone(&self) -> TickPostProcessor
fn clone(&self) -> TickPostProcessor
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TickPostProcessor
impl Debug for TickPostProcessor
Source§impl<__Context> Decode<__Context> for TickPostProcessor
impl<__Context> Decode<__Context> for TickPostProcessor
Source§impl<'de> Deserialize<'de> for TickPostProcessor
impl<'de> Deserialize<'de> for TickPostProcessor
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Encode for TickPostProcessor
impl Encode for TickPostProcessor
Source§impl PartialEq for TickPostProcessor
impl PartialEq for TickPostProcessor
Source§impl Serialize for TickPostProcessor
impl Serialize for TickPostProcessor
impl StructuralPartialEq for TickPostProcessor
Auto Trait Implementations§
impl Freeze for TickPostProcessor
impl RefUnwindSafe for TickPostProcessor
impl Send for TickPostProcessor
impl Sync for TickPostProcessor
impl Unpin for TickPostProcessor
impl UnwindSafe for TickPostProcessor
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<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request