Rust 中字符串到 STR 的转换

Rust 是一种被设计为健壮和安全的语言。它还关注从系统编程到脚本编写的任何事物的性能。

Rust 中的 String 类型不是不可变的,但 String 类型确实具有创建和操作字符串的方法。本文将详细讨论 String&static str

Rust 中字符串的概念

String 是一个包含向量 Vec 的结构,它是一个可以扩展的 8 位无符号数组。

str 不同,String 拥有数据的所有权。因此,在将字符串的值分配给变量时,不必使用 & 或借用状态。

在初始化期间,String 的大小在编译时可能是已知的或未知的,但它可以扩展直到其长度达到其限制。

语法:

letmy_string=String::from("Hello World");

Rust 中 str 的概念

在 Rust 中,str 是定义字符串文字的原始类型。它的信息在程序二进制文件的内存位置中分配。

字符串切片

切片是包含一系列项目并由语法表示的视图。切片没有所有权,但它们允许你参考项目出现的顺序。

因此,字符串切片是对字符串元素序列的引用。

lethello_string=String::from("hello world");lethello_slice=&hello_string[4.8];

字母 "hello world" 存储在 hello_string 变量中。String 是一个可增长的数组,包含每个字符的位置或索引。

字符串文字

字符串文字是通过将文本括在双引号中来构造的。字符串文字有点不同。

它们是字符串切片,指的是作为可执行文件的一部分存储在只读内存中的预分配文本。换句话说,RAM 是随我们的软件一起提供的,并且不依赖于堆栈缓存。

Rust 中字符串到 str 的转换

字符串可能在代码的整个生命周期中都不存在,这就是 &'static str 生命周期的含义,因此,你无法从它们中获取 &'static str。只能从中获取由 String 的生命周期指定的切片。

示例代码:

fn main(){lethello_string=String::from("Hello world");print_infi(&hello_string);print!("Adil {}",hello_string);}fn print_infi(infi: &str){println!("Steve {} ",infi);}

输出:

SteveHelloworldAdilHelloworld

运行代码

Rust 中 str 和 String 的区别

String Str
1. 可变的 不可变
2. 在编译时,大小是未知的。 在编译时,大小是已知的。
3. 数据存储在堆中。 数据存储在应用程序二进制文件的内存位置。
4. 要分配单个 str 变量,请使用或引用。 要分配字符串变量值,你不需要使用或引用。