Rust 中字符串到 STR 的转换

Muhammad Adil 2023年1月30日
  1. Rust 中字符串的概念
  2. Rust 中 str 的概念
  3. Rust 中字符串到 str 的转换
  4. Rust 中 str 和 String 的区别
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
Muhammad Adil avatar Muhammad Adil avatar

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

相关文章 - Rust String