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 separator: u8,
47 pub quote_char: u8,
49 pub null: String,
51 pub line_terminator: String,
53 pub quote_style: QuoteStyle,
55}
56
57impl Default for SerializeOptions {
58 fn default() -> Self {
59 Self {
60 date_format: None,
61 time_format: None,
62 datetime_format: None,
63 float_scientific: None,
64 float_precision: None,
65 separator: b',',
66 quote_char: b'"',
67 null: String::new(),
68 line_terminator: "\n".into(),
69 quote_style: Default::default(),
70 }
71 }
72}
73
74#[derive(Copy, Clone, Debug, Default, Eq, Hash, PartialEq)]
76#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
77#[cfg_attr(feature = "dsl-schema", derive(schemars::JsonSchema))]
78pub enum QuoteStyle {
79 #[default]
86 Necessary,
87 Always,
89 NonNumeric,
94 Never,
96}