From 586eb3d50fa964fe3d9bd7f36b6f2a4341774e00 Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Thu, 5 Nov 2015 15:58:08 +0100 Subject: [PATCH] Add multi-line string literals to TRPL Fixes #29591 --- src/doc/trpl/strings.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/doc/trpl/strings.md b/src/doc/trpl/strings.md index 1848366498981..f61b4d8ed8d5c 100644 --- a/src/doc/trpl/strings.md +++ b/src/doc/trpl/strings.md @@ -24,9 +24,29 @@ compiled program, and exists for the entire duration it runs. The `greeting` binding is a reference to this statically allocated string. String slices have a fixed size, and cannot be mutated. -A `String`, on the other hand, is a heap-allocated string. This string is -growable, and is also guaranteed to be UTF-8. `String`s are commonly created by -converting from a string slice using the `to_string` method. +String literals can span multiple lines. There are two forms. The first will +include the newline and the leading spaces: + +```rust +let s = "foo + bar"; + +assert_eq!("foo\n bar", s); +``` + +The second, with a `\`, does not trim the spaces: + +```rust +let s = "foo\ + bar"; + +assert_eq!("foobar", s); +``` + +Rust has more than just `&str`s though. A `String`, is a heap-allocated string. +This string is growable, and is also guaranteed to be UTF-8. `String`s are +commonly created by converting from a string slice using the `to_string` +method. ```rust let mut s = "Hello".to_string(); // mut s: String