#[inline]
pub(crate) fn trim_eol_from_end(base_line: &str) -> &str {
let eol_len = match base_line.as_bytes() {
[.., b'\r', b'\n'] => 2,
[.., b'\n' | b'\r'] => 1,
_ => 0,
};
let r = &base_line[..base_line.len() - eol_len];
debug_assert!(!r.contains(['\r', '\n']));
r
}
#[cfg(test)]
mod tests {
use super::trim_eol_from_end;
#[test]
fn non_last_row_trimming() {
for normalized in [
"Hello, World",
"Hello, World\r",
"Hello, World\r\n",
"Hello, World\n",
]
.into_iter()
.map(trim_eol_from_end)
{
assert_eq!("Hello, World", normalized);
}
}
}