Strings Multilinha em Rust: sintaxe, exemplos e segredos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Strings Multilinha em Rust: como não enlouquecer com aspas e barras invertidas

\n\n

Olá, amigo! Se você já programou em Python, sabe que criar uma string multilinha lá é mais fácil que tirar doce de criança: três aspas """...""" — e pronto. Mas quando você mudou para Rust, de repente percebeu que o truque habitual não funciona. E agora você está pesquisando no Google: «What is the syntax for a multiline string literal?». Familiar?

\n\n

Não se preocupe, esta é a pergunta mais popular entre iniciantes em Rust, que acumulou milhares de visualizações no Stack Overflow. E hoje vamos entender de uma vez por todas como trabalhar com strings longas em Rust sem enlouquecer. Vamos lá!

\n\n

Por que o Rust não gosta de aspas triplas (como o Python)?

\n\n

Rust é uma linguagem de sistema e rigorosa. Ela não tolera liberdades. Aspas triplas """ em Rust não são sintaxe para strings multilinha, mas sim o início de um comentário ou documentação (se for ///). Então, se você tentar escrever:

\n\n
// ❌ Isso não funciona!\nlet text = """Isto\né uma string\nmultilinha""";\n
\n\n

O compilador vai te olhar com desaprovação e gerar um erro. Em Rust, usa-se uma abordagem diferente para strings multilinha — e é ainda mais legal que em Python!

\n\n

Método #1: aspas comuns e quebra de linha

\n\n

A maneira mais simples é simplesmente quebrar a linha no código usando o caractere \\n dentro da string. Mas isso é chato e ilegível. Muito mais interessante é usar uma quebra de linha real dentro das aspas duplas. Rust permite isso!

\n\n
// ✅ Funciona!\nlet poem = "Aqui está um exemplo de string,\nque ocupa duas linhas,\ne é totalmente legal em Rust.";\nprintln!("{}", poem);\n
\n\n

A saída conterá os caracteres de quebra de linha onde você os colocou no código. Mas há um detalhe: se você quiser preservar a indentação (espaços no início das linhas), eles também serão incluídos na string. Às vezes isso é útil, às vezes não.

\n\n

Método #2: escape e barra invertida — seu amigo (e inimigo)

\n\n

Se você precisa escrever uma string longa no código, mas não adicionar quebras de linha a ela (por exemplo, para legibilidade), use uma barra invertida no final da linha:

\n\n
// ✅ String sem quebras, mas legível no código\nlet long_string = "Esta é uma string muito longa, \\\nque no código é dividida em várias linhas, \\\nmas na memória será uma única string sem \\n.";\nprintln!("{}", long_string);\n
\n\n

Observe: após a barra invertida não deve haver espaços — pressione Enter imediatamente. Caso contrário, o Rust vai achar que você está escapando um espaço e tudo vai quebrar.

\n\n

Método #3: Raw String Literals — magia sem escape

\n\n

Esta é a arma secreta do Rust. Se você precisa escrever uma string contendo muitas aspas, barras invertidas ou outros caracteres especiais (por exemplo, JSON, expressão regular ou caminho do Windows), use r"" — literais de string crua.

\n\n

Dentro de r"...", todos os caracteres são interpretados literalmente. Nada de escape!

\n\n
// ✅ Raw string — sem barras invertidas!\nlet json = r#"{\n    "name": "Rust",\n    "version": 1.75,\n    "features": ["segurança", "velocidade"]\n}"#;\nprintln!("{}", json);\n
\n\n

Mas e se dentro da string aparecer "#? Para isso, Rust permite aumentar o número de # ao redor das aspas: r##"..."##, r###"..."### e assim por diante, infinitamente. Basta escolher uma quantidade de cerquilhas que não apareça dentro da string.

\n\n
// ✅ Raw string com escape de cerquilhas\nlet tricky = r###"String com "aspas" e até "#" dentro!"###;\nprintln!("{}", tricky);\n
\n\n

Método #4: raw strings multilinha — o canivete suíço para dados complexos

\n\n

Agora vamos juntar tudo. Se você precisa escrever um bloco de texto multilinha com aspas, barras invertidas e indentação, use r#""# com quebras de linha diretamente dentro:

Blogs

Book Recommendations