Мне сложно понять, как работает синтаксис строк в Rust. В частности, я пытаюсь понять, как сделать несколько строк строки.Что такое синтаксис для многострочного строкового литерала?
ответ
Все строковые литералы могут быть разбиты на несколько строк, например.
let string = "line one
line two";
это две линии строки, так же, как "line one\nline two"
(конечно, можно использовать побег \n
новой строки непосредственно тоже). Если вы хотите просто сломать строку в нескольких строках по причинам форматирования, вы можете избежать появления новой строки и ведущих пробелов с помощью \
, например.
let string = "one line \
written over \
several";
такое же, как "one line written over several"
.
Спасибо! Я искал случай «line one/nline two». – Dumbapples
В случае, если вы хотите сделать что-то немного дольше, что может или не может включать в кавычки, обратные слэши и т.д., используйте raw string literal notation:
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##"#
"###;
Но ... вам нужно только избегать строк новой строки, если вы не хотите, чтобы в результате появились символы новой строки, а необработанные строки не помогают. – poolie
Необработанные строки просто не позволяют вам добавить «\» в конце каждой строки, если вам не нужны новые строки (например, когда вы вставляете код, который является агностиком новой строки, например шейдеры и ядра) или, как вы намечено, когда новые линии действительно необходимы. Это просто упрощает встраивание кода, который вы, возможно, захотите редактировать, и не должен беспокоиться о «\» в конце каждой строки. Это все. – c0g
Если вы хотите (или не возражаете) символы новой строки в результирующей строке, простые строки с двойными кавычками будут работать отлично, как показано в других примерах. Если вы хотите избежать новых строк, необработанные строки не подходят.Они действительно помогают только в том случае, если текст включает в себя цитаты, обратные косые черты и т. Д. - как это может произойти во встроенном источнике. – poolie
Huon's answer является правильным, но если отступы беспокоит вас, рассмотреть возможность использования Indoc, который процедурный макрос для отступом мю Строки строки. Это означает «документ с отступом». Он предоставляет макрос, называемый indoc!()
, который принимает многострочный строковый литерал и отбрасывает его, поэтому самый левый непространственный символ находится в первом столбце.
let s = indoc!("
line one
line two");
Результат "line one\nline two"
.
Есть несколько эквивалентных способов форматирования одной и той же вещи, если вы предпочитаете, поэтому выберите тот, который вам нравится. Следующие обе приводят к той же строке, что и выше. Содержимое может быть отступом столько, сколько вам нужно - это не должно быть определенное количество пробелов.
let s = indoc!(
"line one
line two");
let s = indoc!("line one
line two");
Whitespace сохраняется относительно крайнего левого без пробела в документе, так что следующий имеет линию два отступом 3 пробела по отношению к одной линии:
let s = indoc!("
line one
line two");
Результатом является "line one\n line two"
.
- 1. Flex/Yacc: что такое регулярное выражение для строкового литерала SQL?
- 2. Что такое шаблон T & параметра при создании экземпляра строкового литерала?
- 3. Python строкового литерала конкатенация
- 4. Pre приращением строкового литерала
- 5. Длина адреса строкового литерала
- 6. сравнения строкового литерала
- 7. Объявить массив строкового литерала
- 8. Назначение адреса строкового литерала указателю
- 9. Получить размер строкового литерала параметр
- 10. Развернуть макроса внутри строкового литерала
- 11. Назначение строкового литерала для строки в C#
- 12. Выбор строкового литерала для специализации шаблона
- 13. Что такое синтаксис для array.select?
- 14. Что такое синтаксис для setTimeout?
- 15. Отображение строкового литерала Oracle ODI
- 16. Глобальная переменная против макрораспределения для строкового литерала
- 17. Правильный синтаксис для многострочного комментария в xml?
- 18. Создание строкового литерала из определения
- 19. Передача строкового литерала методу ObjC
- 20. Идентификация неявного строкового литерала конкатенации
- 21. load_workbook дает ошибку значения для строкового литерала
- 22. Python рассматривает «is» для плюрализации строкового литерала
- 23. Как печатать каждый элемент многострочного строкового параметра?
- 24. преобразования строкового литерала к дате
- 25. Извлечение слова из строкового литерала?
- 26. Возврат строкового литерала из API
- 27. Инициализировать массивы символов из строкового литерала
- 28. JavaScript объект синтаксис литерала
- 29. Что такое синтаксис keybinds.settings?
- 30. Что такое синтаксис for (;;) {}?
Возможный дубликат [Как написать многострочную строку в Rust?] (Http://stackoverflow.com/questions/15265198/how-do-i-write-a-multi-line-string-in -rust) –