Rollup merge of #113512 - vallentin:lines-doc, r=workingjubilee

Updated lines doc to include trailing carriage return note

Updated `str::lines` doc to include explicit info about (trailing) carriage returns.

Reference: #100311
This commit is contained in:
fee1-dead 2023-07-30 07:13:02 +00:00 committed by GitHub
commit b97da75156
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -952,6 +952,10 @@ pub fn split_ascii_whitespace(&self) -> SplitAsciiWhitespace<'_> {
///
/// Line terminators are not included in the lines returned by the iterator.
///
/// Note that any carriage return (`\r`) not immediately followed by a
/// line feed (`\n`) does not split a line. These carriage returns are
/// thereby included in the produced lines.
///
/// The final line ending is optional. A string that ends with a final line
/// ending will return the same lines as an otherwise identical string
/// without a final line ending.
@ -961,18 +965,19 @@ pub fn split_ascii_whitespace(&self) -> SplitAsciiWhitespace<'_> {
/// Basic usage:
///
/// ```
/// let text = "foo\r\nbar\n\nbaz\n";
/// let text = "foo\r\nbar\n\nbaz\r";
/// let mut lines = text.lines();
///
/// assert_eq!(Some("foo"), lines.next());
/// assert_eq!(Some("bar"), lines.next());
/// assert_eq!(Some(""), lines.next());
/// assert_eq!(Some("baz"), lines.next());
/// // Trailing carriage return is included in the last line
/// assert_eq!(Some("baz\r"), lines.next());
///
/// assert_eq!(None, lines.next());
/// ```
///
/// The final line ending isn't required:
/// The final line does not require any ending:
///
/// ```
/// let text = "foo\nbar\n\r\nbaz";