csv-async 1.3.1

CSV parsing for async.
Documentation
#[cfg(not(feature = "tokio"))]
mod helpers_async_std;
#[cfg(feature = "tokio")]
mod helpers_tokio;

#[cfg(not(feature = "tokio"))]
pub use helpers_async_std::*;
#[cfg(feature = "tokio")]
pub use helpers_tokio::*;

#[allow(dead_code)]
pub fn custom_error_message(err: &csv_async::Error) -> String {
    match err.kind() {
        csv_async::ErrorKind::Io(e) => {
            format!("IO Error: {e}")
        },
        csv_async::ErrorKind::Seek => {
            String::from("Seek error")
        },
        csv_async::ErrorKind::UnequalLengths { pos, expected_len, len } => {
            format!("Unequal lengths: position = {pos:?}, expected_len = {expected_len}, len = {len}")
        },
        csv_async::ErrorKind::Utf8 { pos, err } => {
            format!("Invalid UTF8: position = {pos:?}, err = {err}")
        },
        #[cfg(feature = "with_serde")]
        csv_async::ErrorKind::Serialize(msg) => {
            format!("Serialize error: {msg}")
        },
        #[cfg(feature = "with_serde")]
        csv_async::ErrorKind::Deserialize { pos, err } => {
            let field = err.field();
            let msg = match err.kind() {
                csv_async::DeserializeErrorKind::InvalidUtf8(e) => {
                    format!("Invalid UTF8: {e}")
                },
                csv_async::DeserializeErrorKind::Message(msg) => msg.clone(),
                csv_async::DeserializeErrorKind::ParseBool(e) => {
                    format!("Error parsing boolean: {e}")
                }
                csv_async::DeserializeErrorKind::ParseFloat(e) => {
                    format!("Error parsing float: {e}")
                }
                csv_async::DeserializeErrorKind::ParseInt(e) => {
                    format!("Error parsing integer: {e}")
                }
                csv_async::DeserializeErrorKind::UnexpectedEndOfRow => {
                    String::from("Row has too few fields")
                }
                csv_async::DeserializeErrorKind::Unsupported(e) => {
                    format!("Unsupported type: {e}")
                }
            };
            format!("Deserialize error: position = {pos:?}, field = {field:?}: {msg}")
        },
        _ => String::from("Other error")
    }
}