json-decoder-api-0.rs/src/default_handlers/floats.rs

39 lines
1.0 KiB
Rust

use crate::dsl::{FloatHandler, IntegerHandler};
use std::marker::PhantomData;
pub struct Handler_F64<S, StoreFn: Fn(&mut S, f64)> {
store: StoreFn,
__phantom: PhantomData<S>,
}
impl<S, StoreFn: Fn(&mut S, f64)> Handler_F64<S, StoreFn> {
pub fn create(f: StoreFn) -> Self {
return Self {
store: f,
__phantom: PhantomData::default(),
};
}
}
impl<S, StoreFn: Fn(&mut S, f64)> FloatHandler<S> for Handler_F64<S, StoreFn> {
fn handleFloat(&self, dst: &mut S, value: f64) {
(self.store)(dst, value);
}
}
pub struct Handler_F32<S, StoreFn: Fn(&mut S, f32)> {
store: StoreFn,
__phantom: PhantomData<S>,
}
impl<S, StoreFn: Fn(&mut S, f32)> Handler_F32<S, StoreFn> {
pub fn create(f: StoreFn) -> Self {
return Self {
store: f,
__phantom: PhantomData::default(),
};
}
}
impl<S, StoreFn: Fn(&mut S, f32)> FloatHandler<S> for Handler_F32<S, StoreFn> {
fn handleFloat(&self, dst: &mut S, value: f64) {
(self.store)(dst, value as f32);
}
}