Hacer coincidir una cadena con literales de cadena

Nilesh Katuwal 21 junio 2023
  1. Cuerda en óxido
  2. Literales de cadena en Rust
  3. Convertir String a un &str en Rust
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.

Artículo relacionado - Rust String