답변:
모든 문자열 리터럴은 여러 줄로 나눌 수 있습니다. 예를 들면 다음과 같습니다.
let string = "line one
line two";
와 같은 두 줄 문자열 "line one\nline two"
입니다 (물론 \n
줄 바꿈 이스케이프도 직접 사용할 수 있습니다 ). 서식상의 이유로 여러 줄에서 문자열을 나누려면 줄 바꿈을 사용하고 공백을 \
; 예를 들면 다음과 같습니다.
let string = "one line \
written over \
several";
와 동일합니다 "one line written over several"
.
문자열에 줄 바꿈을 원하면 다음 앞에 줄 바꿈을 추가 할 수 있습니다 \
.
let string = "multiple\n\
lines\n\
with\n\
indentation";
그것은 같은 "multiple\nlines\nwith\nindentation";
concat!()
주어진 옵션을 완료하기 위해 매크로를 추가하고 싶습니다 ( doc.rust-lang.org/std/macro.concat.html )
따옴표, 백 슬래시 등을 포함하거나 포함하지 않을 수있는 약간 더 긴 작업을 수행하려는 경우 원시 문자열 리터럴 표기법을 사용하십시오 .
let shader = r#"
#version 330
in vec4 v_color;
out vec4 color;
void main() {
color = v_color;
};
"#;
문자열 내에 큰 따옴표와 해시 기호가 있으면 임의의 수의 해시를 구분 기호로 표시 할 수 있습니다.
let crazy_raw_string = r###"
My fingers #"
can#"#t stop "#"" hitting
hash##"#
"###;
Huon의 대답 은 정확하지만 들여 쓰기가 귀찮은 경우 들여 쓰기 된 여러 줄 문자열의 절차 매크로 인 Indoc 을 사용 하는 것이 좋습니다. "들여 쓰기 된 문서"를 나타냅니다. 여러 indoc!()
줄 문자열 리터럴을 가져와 들여 쓰기를 해제하여 가장 왼쪽에있는 공백이 아닌 문자가 첫 번째 열에 있는 매크로를 제공합니다 .
let s = indoc! {"
line one
line two
"};
결과는 "line one\nline two\n"
입니다.
공백은 문서에서 가장 왼쪽에있는 공백이 아닌 문자를 기준으로 유지되므로 다음은 한 줄에 대해 두 줄 들여 쓰기 된 3 개의 공백이 있습니다.
let s = indoc! {"
line one
line two
"};
결과는 "line one\n line two\n"
입니다.
코드에서 여러 줄로 된 텍스트를 들여 쓰려면
let s = "first line\n\
second line\n\
third line";
println!("Multiline text goes next:\n{}", s);
결과는 다음과 같습니다.
Multiline text goes next:
first line
second line
third line
\n
개행 이스케이프 [...]를 사용할 수 있습니다{backslash}
. (댓글에 코드에 백 슬래시를 입력하는 것은 매우 어렵습니다.)