02 cuerdas en óxido

Rust divide las cadenas en diferentes tipos según los diferentes escenarios de aplicación. Hoy solo presentamos los dos tipos más comunes de str y String

calle 2.1

str es un tipo nativo en Rust y se almacena en un área de almacenamiento estática. Debido a que es un tipo dinámico, el tamaño no se puede determinar en tiempo de compilación, por lo que a menudo usamos su forma de referencia &str. str siempre es válido con codificación UTF-8

Puede ser creado directamente por literales, convertido de otros tipos o convertido a otros tipos

De hecho, como tipo nativo de óxido, str implementa muchos métodos. Admite operaciones como convertir, dividir, analizar y buscar cadenas. Los lectores específicos pueden consultar la biblioteca estándar

https://doc.rust-lang.org/std/primitive.str.html#

Además, str implementa características comunes, como AsMut, Debug, From, etc., y también implementa Send y Sync, que se pueden usar sin preocupaciones en la programación concurrente.

Nota especial: los tipos de referencia son ciudadanos de primera clase en Rust y se copian

2.2 Cuerda

String es un puntero grueso (y un puntero inteligente: se puede desreferenciar automáticamente y llamar a su destructor). Contiene tres palabras: ptr, cap y len respectivamente. Los datos se almacenan en el montón con un tamaño dinámico. es esencialmente una estructura

Nota: String no implementa el rasgo Copiar

Un escenario común para String es procesar algún contenido de archivo. Veamos un ejemplo más completo. Este ejemplo lee los números en un archivo local y realiza una operación de suma.

Nombre de archivo local: sum_text

A través del ejemplo anterior, podemos ver que en algunos escenarios donde los datos son dinámicos, a menudo usamos String. Además, hay muchos puntos de conocimiento involucrados en String, como el mecanismo de propiedad, el puntero inteligente, varios rasgos, memoria, pila de llamadas a funciones, etc. Explicaremos estos puntos de conocimiento uno por uno más adelante.

Código de muestra Dirección de Github:

https://github.com/shiyivei/from-principle-to-practice/blob/main/src/principle-and-practice/src/type_system/string_and_char.rs

https://github.com/shiyivei/from-principle-to-practice/blob/main/src/parse-file/src/refactor_one.rs

更多内容,欢迎关注公众号拾一维

Supongo que te gusta

Origin blog.csdn.net/weixin_51487151/article/details/129388189
Recomendado
Clasificación