lexical_write_float/
api.rs1#![doc(hidden)]
4
5#[cfg(feature = "f16")]
6use lexical_util::bf16::bf16;
7#[cfg(feature = "f16")]
8use lexical_util::f16::f16;
9use lexical_util::format::STANDARD;
10use lexical_util::{to_lexical, to_lexical_with_options};
11
12use crate::options::Options;
13use crate::write::WriteFloat;
14
15const DEFAULT_OPTIONS: Options = Options::new();
18
19macro_rules! float_to_lexical {
21 ($($t:tt ; )*) => ($(
22 impl ToLexical for $t {
23 #[cfg_attr(not(feature = "compact"), inline)]
24 fn to_lexical(self, bytes: &mut [u8])
25 -> &mut [u8]
26 {
27 let count = self.write_float::<{ STANDARD }>(bytes, &DEFAULT_OPTIONS);
28 &mut bytes[..count]
29 }
30 }
31
32 impl ToLexicalWithOptions for $t {
33 type Options = Options;
34 #[cfg_attr(not(feature = "compact"), inline)]
35 fn to_lexical_with_options<'a, const FORMAT: u128>(
36 self,
37 bytes: &'a mut [u8],
38 options: &Self::Options,
39 ) -> &'a mut [u8]
40 {
41 let count = self.write_float::<{ FORMAT }>(bytes, &options);
42 &mut bytes[..count]
43 }
44 }
45 )*)
46}
47
48to_lexical! {}
49to_lexical_with_options! {}
50float_to_lexical! {
51 f32 ;
52 f64 ;
53}
54#[cfg(feature = "f16")]
55float_to_lexical! {
56 f16 ;
57 bf16 ;
58}