+#[derive(PartialEq, Eq, Debug)]
+struct Config {
+ column_threshold: usize,
+ static_columns: Vec<String>,
+}
+impl Config {
+ fn apply_command(&mut self, line_num: usize, cmd: &str) -> Result<(), std::io::Error> {
+ if let Some(threshold) = cmd.strip_prefix("col_threshold ") {
+ self.column_threshold = threshold.parse().map_err(|e| {
+ std::io::Error::new(
+ std::io::ErrorKind::InvalidInput,
+ format!("line {line_num}: col_threshold must be numeric: {e}"),
+ )
+ })?;
+ } else if let Some(col) = cmd.strip_prefix("col ") {
+ self.static_columns.push(col.to_owned());
+ } else {
+ return Err(std::io::Error::new(
+ std::io::ErrorKind::InvalidInput,
+ format!("line {line_num}: Unknown command: {cmd}"),
+ ));
+ }
+ Ok(())
+ }
+}