手机模板网站制作,哈尔滨网站定制公司,做视频参考什么网站,网站搜什么关键词好Rust 中的字符串类型#xff1a;str 和 String 文章目录 Rust 中的字符串类型#xff1a;str 和 String1. str#xff1a;不可变的字符串引用2. String#xff1a;可变的字符串3、字符串使用综合案例代码执行结果 在 Rust 编程语言中#xff0c;有两种主要…Rust 中的字符串类型str 和 String 文章目录 Rust 中的字符串类型str 和 String1. str不可变的字符串引用2. String可变的字符串3、字符串使用综合案例代码执行结果 在 Rust 编程语言中有两种主要的字符串类型
str 和
String。这两种类型在不同的场景下有不同的用途和特性。 1. str不可变的字符串引用
str 是字符串切片类型它是对已有字符串的引用。通常用于引用固定的字符串字面量或者 String 对象的切片。以下是 str 的主要特性
不可变性str 类型的字符串是不可变的一旦创建就不能修改其内容。静态分配str 类型的字符串的大小在编译时已知并且通常存储在只读内存中。不拥有所有权str 只是对字符串的引用并不拥有它的所有权。因此它不负责内存管理。
fn main() {// 创建字符串切片let static_str: str hello world;// 创建字符串切片的引用let static_str_ref: str static_str;// 打印字符串切片println!(Static string slice: {}, static_str);println!(Static string slice reference: {}, static_str_ref);
}运行结果
Static string slice: hello world
Static string slice reference: hello worldstr 通常用于函数参数、表示静态的不可变字符串以及字符串切片的处理。
2. String可变的字符串
String 是动态字符串类型它是一个堆上分配的可变的字符串。以下是 String 的主要特性
可变性String 类型的字符串是可变的其大小在运行时可以动态变化。因此你可以修改其内容和大小。动态分配String 类型的字符串的内存是在堆上动态分配的可以根据需要动态增长。拥有所有权String 对象拥有其所包含字符串的所有权并负责其内存的管理。因此它负责分配和释放内存。
fn main() {// 创建动态字符串let mut dynamic_string String::from(hello);// 追加字符串内容dynamic_string.push_str(, world);// 打印动态字符串println!(Dynamic string: {}, dynamic_string);
}运行结果
Dynamic string: hello, worldString 通常用于需要动态创建、修改和拥有的字符串以及对字符串进行各种操作和处理。
总的来说str 和 String 两种字符串类型各有其特点你可以根据具体需求选择合适的类型来处理字符串。
3、字符串使用综合案例
代码
fn main() {// 使用字符串字面量创建静态字符串let static_str hello world;// 使用 String::from() 方法从字符串字面量创建动态字符串let dynamic_str_from String::from(hello);// 使用 to_string() 方法从其他类型创建动态字符串let num 42;let num_to_string num.to_string();// 使用 String::new() 方法创建空的动态字符串let mut empty_str String::new();empty_str.push_str(hello 111);empty_str.push_str( world);// 使用 format! 宏创建格式化的字符串let formatted_str format!(The answer is {}, 42);// 使用 String::with_capacity() 方法创建具有指定容量的空字符串let mut str_with_capacity String::with_capacity(10);str_with_capacity.push_str(0123456789);// 不会报错即使指定了容量为10push_str() 方法会自动重新分配更大的内存空间来容纳更多的数据。str_with_capacity.push_str(1111111);// 演示字符串创建的结果println!(Static string: {}, static_str);println!(Dynamic string from string literal: {}, dynamic_str_from);println!(String from number: {}, num_to_string);println!(Empty string: {}, empty_str);println!(Formatted string: {}, formatted_str);println!(String with capacity: {:?}, str_with_capacity);
}执行结果
C:/Users/Administrator/.cargo/bin/cargo.exe run --coloralways --package hello-rust --bin hello-rustFinished dev [unoptimized debuginfo] target(s) in 0.00sRunning target\debug\hello-rust.exe
Static string: hello world
Dynamic string from string literal: hello
String from number: 42
Empty string: hello 111 world
Formatted string: The answer is 42
String with capacity: 01234567891111111 进程已结束退出代码为 0