1
Fork 0

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 @@ impl str {
/// ///
/// Line terminators are not included in the lines returned by the iterator. /// 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 /// 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 /// ending will return the same lines as an otherwise identical string
/// without a final line ending. /// without a final line ending.
@ -961,18 +965,19 @@ impl str {
/// Basic usage: /// Basic usage:
/// ///
/// ``` /// ```
/// let text = "foo\r\nbar\n\nbaz\n"; /// let text = "foo\r\nbar\n\nbaz\r";
/// let mut lines = text.lines(); /// let mut lines = text.lines();
/// ///
/// assert_eq!(Some("foo"), lines.next()); /// assert_eq!(Some("foo"), lines.next());
/// assert_eq!(Some("bar"), lines.next()); /// assert_eq!(Some("bar"), lines.next());
/// assert_eq!(Some(""), 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()); /// 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"; /// let text = "foo\nbar\n\r\nbaz";