polars_io/csv/write/
options.rs1use std::num::NonZeroUsize;
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Clone, Debug, Eq, Hash, PartialEq)]
8#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
9#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]
10pub struct CsvWriterOptions {
11 pub include_bom: bool,
12 pub include_header: bool,
13 pub batch_size: NonZeroUsize,
14 pub serialize_options: SerializeOptions,
15}
16
17impl Default for CsvWriterOptions {
18 fn default() -> Self {
19 Self {
20 include_bom: false,
21 include_header: true,
22 batch_size: NonZeroUsize::new(1024).unwrap(),
23 serialize_options: SerializeOptions::default(),
24 }
25 }
26}
27
28#[derive(Clone, Debug, Eq, Hash, PartialEq)]
32#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
33#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]
34pub struct SerializeOptions {
35 pub date_format: Option<String>,
37 pub time_format: Option<String>,
39 pub datetime_format: Option<String>,
41 pub float_scientific: Option<bool>,
44 pub float_precision: Option<usize>,
45 pub decimal_comma: bool,
47 pub separator: u8,
49 pub quote_char: u8,
51 pub null: String,
53 pub line_terminator: String,
55 pub quote_style: QuoteStyle,
57}
58
59impl Default for SerializeOptions {
60 fn default() -> Self {
61 Self {
62 date_format: None,
63 time_format: None,
64 datetime_format: None,
65 float_scientific: None,
66 float_precision: None,
67 decimal_comma: false,
68 separator: b',',
69 quote_char: b'"',
70 null: String::new(),
71 line_terminator: "\n".into(),
72 quote_style: Default::default(),
73 }
74 }
75}
76
77#[derive(Copy, Clone, Debug, Default, Eq, Hash, PartialEq)]
79#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
80#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]
81pub enum QuoteStyle {
82 #[default]
89 Necessary,
90 Always,
92 NonNumeric,
97 Never,
99}