Hacer coincidir una cadena con literales de cadena
Este tutorial trata sobre cómo hacer coincidir una cadena con literales de cadena en Rust.
Cuerda en óxido
El tipo String
es el tipo de cadena más popular, ya que posee el contenido de la cadena. Está estrechamente relacionado con el primitivo str
.
En Rust, las cadenas se clasifican en dos tipos, es decir, String
y &str
.
Una String
se guarda como un vector de bytes (Vec<u8>
) pero se garantiza que es una secuencia UTF-8 válida. String
es una variable asignada al montón que es ampliable y no terminada en nulo.
&str
es un segmento (&[u8]
) que siempre apunta a una secuencia UTF-8 válida y se puede usar para ver una String
, de manera similar a cómo se puede usar &[T]
para ver en un Vec<T>
.
Podemos crear una Cadena
a partir de una cadena literal usando Cadena::desde
.
Ejemplo:
let _welcome = String::from("Welcome to the world of Rust");
Literales de cadena en Rust
Existen numerosas formas de expresar literales de cadena que contienen caracteres especiales. Todos dan como resultado un &str
similar; por lo tanto, es mejor usar la forma más conveniente.
Ocasionalmente, hay demasiados caracteres para escapar, o es más conveniente escribir una cadena. Este es el caso cuando se utilizan literales de cadena sin formato.
Ejemplo:
fn main() {
let rawString = r"This is an example of raw string: \x3F \u{211D}";
println!("{}", rawString);
let spec_char = r#"I learnt that: "Quotes can also be used!""#;
println!("{}", spec_char);
}
Producción :
This is an example of raw string: \x3F \u{211D}
I learnt that: "Quotes can also be used!"
Si necesitamos agregar comillas en una cadena sin procesar, debemos agregar un par de #
como hemos usado en las líneas de código anteriores.
Los literales de cadena pueden tener saltos de línea en ellos. Cuando termina una línea, puede ser un salto de línea (U+000A)
o un par de retornos de carro y un salto de línea (U+10000, U+10000)
.
Una excepción notable ocurre cuando aparece un carácter U+005C
sin escape justo antes de un salto de línea. El carácter U+005C
y todos los espacios en blanco en la siguiente línea no se traducen a U+000A
.
Convertir String a un &str
en Rust
Necesitamos usar .as_str()
como este para convertir la Cadena
en &str
.
Ejemplo:
fn main() {
let the_string = String::from("z");
match the_string.as_str() {
"x" => println!("Hello"),
"y" => println!("There"),
"z" => println!("Hello Rust!!!"),
_ => println!("something else!"),
}
}
Producción :
Hello Rust!!!
.as str()
es más breve y aplica una verificación de tipo más robusta.