Determine a string's preferred newline character
cargo add detect-newline-style
use detect_newline_style::LineEnding;
fn main() {
let text = "one\rtwo\r\nthree\nfour\n";
let eol = LineEnding::find(text, LineEnding::LF);
assert_eq!(eol, LineEnding::LF);
let text = "one\rtwo\r\nthree\n";
let eol = LineEnding::find_or_use_lf(text);
assert_eq!(eol, LineEnding::LF);
let text = "one\rtwo\r\nthree\n";
let eol = LineEnding::find_or_use_crlf(text);
assert_eq!(eol, LineEnding::CRLF);
assert_eq!(format!("{}", LineEnding::CR), "\r");
assert_eq!(format!("{}", LineEnding::LF), "\n");
assert_eq!(format!("{}", LineEnding::CRLF), "\r\n");
}