#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct DsvConfig {
pub delimiter: u8,
pub quote_char: u8,
pub newline: u8,
pub select_sample_rate: u32,
}
impl Default for DsvConfig {
fn default() -> Self {
Self {
delimiter: b',',
quote_char: b'"',
newline: b'\n',
select_sample_rate: 256,
}
}
}
impl DsvConfig {
pub fn csv() -> Self {
Self::default()
}
pub fn tsv() -> Self {
Self {
delimiter: b'\t',
..Self::default()
}
}
pub fn psv() -> Self {
Self {
delimiter: b'|',
..Self::default()
}
}
pub fn with_delimiter(mut self, delimiter: u8) -> Self {
self.delimiter = delimiter;
self
}
pub fn with_quote_char(mut self, quote_char: u8) -> Self {
self.quote_char = quote_char;
self
}
pub fn with_select_sample_rate(mut self, rate: u32) -> Self {
self.select_sample_rate = rate;
self
}
}