serde_arrow 0.14.0

Convert sequences of Rust objects to Arrow arrays and back again
Documentation
use half::f16;
use serde::de::Visitor;

use crate::internal::error::Result;

use super::{float_deserializer::Float, random_access_deserializer::RandomAccessDeserializer};

impl Float for f16 {
    fn deserialize_any_at<'de, S: RandomAccessDeserializer<'de>, V: Visitor<'de>>(
        deser: &S,
        visitor: V,
        idx: usize,
    ) -> Result<V::Value> {
        deser.deserialize_f32(visitor, idx)
    }

    fn into_f32(self) -> Result<f32> {
        Ok(self.to_f32())
    }

    fn into_f64(self) -> Result<f64> {
        Ok(self.to_f64())
    }
}

impl Float for f32 {
    fn deserialize_any_at<'de, S: RandomAccessDeserializer<'de>, V: Visitor<'de>>(
        deser: &S,
        visitor: V,
        idx: usize,
    ) -> Result<V::Value> {
        deser.deserialize_f32(visitor, idx)
    }

    fn into_f32(self) -> Result<f32> {
        Ok(self)
    }

    fn into_f64(self) -> Result<f64> {
        Ok(self as f64)
    }
}

impl Float for f64 {
    fn deserialize_any_at<'de, S: RandomAccessDeserializer<'de>, V: Visitor<'de>>(
        deser: &S,
        visitor: V,
        idx: usize,
    ) -> Result<V::Value> {
        deser.deserialize_f64(visitor, idx)
    }

    fn into_f32(self) -> Result<f32> {
        Ok(self as f32)
    }

    fn into_f64(self) -> Result<f64> {
        Ok(self)
    }
}