Rust 中字符串到 STR 的转换
Rust 是一种被设计为健壮和安全的语言。它还关注从系统编程到脚本编写的任何事物的性能。
Rust 中的 String 类型不是不可变的,但 String 类型确实具有创建和操作字符串的方法。本文将详细讨论 String
和&static str
。
Rust 中字符串的概念
String 是一个包含向量 Vec
的结构,它是一个可以扩展的 8 位无符号数组。
与 str
不同,String 拥有数据的所有权。因此,在将字符串的值分配给变量时,不必使用 & 或借用状态。
在初始化期间,String 的大小在编译时可能是已知的或未知的,但它可以扩展直到其长度达到其限制。
语法:
let my_string = String::from("Hello World");
Rust 中 str
的概念
在 Rust 中,str
是定义字符串文字的原始类型。它的信息在程序二进制文件的内存位置中分配。
字符串切片
切片是包含一系列项目并由语法表示的视图。切片没有所有权,但它们允许你参考项目出现的顺序。
因此,字符串切片是对字符串元素序列的引用。
let hello_string = String::from("hello world");
let hello_slice = &hello_string[4.8];
字母 "hello world"
存储在 hello_string
变量中。String 是一个可增长的数组,包含每个字符的位置或索引。
字符串文字
字符串文字是通过将文本括在双引号中来构造的。字符串文字有点不同。
它们是字符串切片,指的是作为可执行文件的一部分存储在只读内存中的预分配文本
。换句话说,RAM 是随我们的软件一起提供的,并且不依赖于堆栈缓存。
Rust 中字符串到 str
的转换
字符串可能在代码的整个生命周期中都不存在,这就是 &'static str
生命周期的含义,因此,你无法从它们中获取 &'static str
。只能从中获取由 String 的生命周期指定的切片。
示例代码:
fn main() {
let hello_string = String::from("Hello world");
print_infi(&hello_string);
print!("Adil {}", hello_string);
}
fn print_infi(infi: &str) {
println!("Steve {} ", infi);
}
输出:
Steve Hello world
Adil Hello world
Rust 中 str
和 String 的区别
String |
Str |
|
---|---|---|
1. | 可变的 | 不可变 |
2. | 在编译时,大小是未知的。 | 在编译时,大小是已知的。 |
3. | 数据存储在堆中。 | 数据存储在应用程序二进制文件的内存位置。 |
4. | 要分配单个 str 变量,请使用或引用。 |
要分配字符串变量值,你不需要使用或引用。 |
Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.
Facebook