···11# Changelog
2233+## Next
44+- Add Pipeline select method
55+- Add Pipeline `from_pipelines` constructor for merging pipelines together
66+37## 0.2.0 - 2023 Jan 11
48- Add `Target` struct helper for creating targets, and hide the targets in the `target` module.
59- Publish `Transform` trait
+2-1
src/headers.rs
···1616 }
1717 }
18181919- /// Returns `false` if `from` is non-existant or if the new name already exists
1919+ /// Returns `Error::MissingColumn` if `from` is non-existant or `Error::DuplicateColumn` the new name already exists
2020 pub fn rename(&mut self, from: &str, to: &str) -> Result<(), Error> {
2121 if self.contains(to) {
2222 return Err(Error::DuplicateColumn(to.to_string()));
···6060 &self.row
6161 }
62626363+ /// Returns `Error::DuplicateColumn` if a column is duplicated
6364 pub fn from_row(row: Row) -> Result<Self, Error> {
6465 let mut header = Headers::new();
6566 for field in &row {
+6
src/lib.rs
···114114115115#[derive(Debug)]
116116pub enum Error {
117117+ /// cSV and IO errors are in here
117118 Csv(csv::Error),
118119 Io(std::io::Error),
120120+ /// The column of this name is missing.
119121 MissingColumn(String),
122122+ /// This column name appears twice.
120123 DuplicateColumn(String),
124124+ /// This field has an invalid format.
121125 InvalidField(String),
126126+ /// Two pipeline sources don't have the same headers.
127127+ MismatchedHeaders(Row, Row),
122128}
123129impl From<csv::Error> for Error {
124130 fn from(error: csv::Error) -> Error {