Cadenas multilínea en Rust: cómo no volverse loco con comillas y barras invertidas
\n\n¡Hola, amigo! Si alguna vez has programado en Python, sabes que hacer una cadena multilínea allí es pan comido: tres comillas """...""" y listo. Pero en cuanto pasas a Rust, te das cuenta de que el truco habitual no funciona. Y ahí estás, buscando en Google: «What is the syntax for a multiline string literal?». ¿Te suena?
No te preocupes, esta es la pregunta más popular entre los principiantes en Rust, que ha acumulado miles de visitas en Stack Overflow. Y hoy vamos a entender de una vez por todas cómo trabajar con cadenas largas en Rust sin volverte loco. ¡Allá vamos!
\n\n¿Por qué Rust no ama las comillas triples (como Python)?
\n\nRust es un lenguaje de sistemas y estricto. No perdona las libertades. Las comillas triples """ en Rust no son sintaxis para cadenas multilínea, sino el inicio de un comentario o documentación (si es ///). Así que si intentas escribir:
// ❌ ¡Esto no funciona!\nlet text = """Esto\nes multilínea\ncadena""";\n\n\nEl compilador te mirará con desaprobación y te dará un error. En Rust se usa otro enfoque para las cadenas multilínea, ¡y es incluso mejor que en Python!
\n\nMétodo n.º 1: comillas normales y salto de línea
\n\nLa forma más sencilla es simplemente romper la cadena en el código usando el carácter \\n dentro de la cadena. Pero esto es aburrido y poco legible. Es mucho más interesante usar un salto de línea real dentro de las comillas dobles. ¡Rust lo permite!
// ✅ ¡Funciona!\nlet poem = "Este es un ejemplo de cadena,\nque ocupa dos líneas,\ny es completamente legal en Rust.";\nprintln!("{}", poem);\n\n\nLa salida contendrá los caracteres de salto de línea donde los hayas puesto en el código. Pero hay un detalle: si quieres conservar la sangría (espacios al inicio de las líneas), también se incluirán en la cadena. A veces es útil, a veces no.
\n\nMétodo n.º 2: escape y barra invertida: tu amiga (y enemiga)
\n\nSi necesitas escribir una cadena larga en el código pero sin añadir saltos de línea (por ejemplo, para legibilidad), usa la barra invertida al final de la línea:
\n\n// ✅ Cadena sin saltos, pero legible en el código\nlet long_string = "Esta es una cadena muy larga, \\\nque en el código está dividida en varias líneas, \\\npero en memoria será una sola línea sin \\n.";\nprintln!("{}", long_string);\n\n\nTen en cuenta: después de la barra invertida no debe haber espacios, inmediatamente Enter. De lo contrario, Rust pensará que estás escapando un espacio y todo se romperá.
\n\nMétodo n.º 3: Raw String Literals: magia sin escape
\n\nY esto es el arma secreta de Rust. Si necesitas escribir una cadena que contenga muchas comillas, barras invertidas u otros caracteres especiales (por ejemplo, JSON, expresiones regulares o rutas de Windows), usa r"" — literales de cadena cruda.
Dentro de r"..." todos los caracteres se toman literalmente. ¡Sin escape!
// ✅ Raw string: ¡sin barras invertidas!\nlet json = r#"{\n "name": "Rust",\n "version": 1.75,\n "features": ["seguridad", "velocidad"]\n}"#;\nprintln!("{}", json);\n\n\nPero, ¿qué pasa si dentro de la cadena aparece "#? Para eso, Rust permite aumentar el número de # alrededor de las comillas: r##"..."##, r###"..."### y así hasta el infinito. Simplemente elige un número de almohadillas que no aparezca dentro de la cadena.
// ✅ Raw string con escape de almohadillas\nlet tricky = r###"Cadena con "comillas" e incluso "#" dentro!"###;\nprintln!("{}", tricky);\n\n\nMétodo n.º 4: raw strings multilínea: la navaja suiza para datos complejos
\n\nY ahora combinemos todo. Si necesitas escribir un bloque de texto multilínea con comillas, barras invertidas y sangría, usa r#""# con saltos de línea directamente dentro:
Blogs
Book Recommendations
Leer también
Principales errores de los desarrolladores principiantes de JavaScript: cómo evitarlos