Rust 中字符串到 STR 的转换

Muhammad Adil 2023年1月30日 Rust Rust String
  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 变量,请使用或引用。 要分配字符串变量值,你不需要使用或引用。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: 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