字符串类型
doc.rust-lang.org/std/index.h… 学习中不要忘了 rust 标准
Rust的文本类型主要包含6种:
character: rust类型为:charstring: rust类型为:&strraw string:bytebyte stringraw byte string
rust 标准库中的 string
char用于存放单个unicode字符,占用 4 字节空间(32bit)。std::str字符串切片类型(字符串字面量)std::string::String
标准库 std::char
use std::char;
println!("{}", char::from_u32(0x2764).unwrap()); // ❤
标准库 std::str
str 需与 & 使用 &str 表示切片类型。基本数据类型, 存放于栈中
let a: &str = "this is std::str"; // 切片类型
let b = [12, 23];
println!("{}-{:?}", a, b);
str 切片类型不能直接访问(动态大小类型),必须使用 & 表示引用字符串。下面是一个切片生成另外一个切片
let s: &str = "this slice type string"
let d: &str = &s[..5]
切片字符串的特点:不可变,只能通过应用的方式切片引用部分来使用。当然,类型转换我们回放在后面涉及到。
标准库 std::string::String
String 类型,相对于 str 切片类型就比较灵活。String 可以直接使用,不用使用 use 关键字导入。引用数据类型,存放于堆中:
new 方法创建一个空字符
let empty_str = String::new()
from 方创建一个字符串
const str: String = String::from("this is flex string");
str 与 String 类型之间的相互转换
String -> str 是廉价的
- 解除引用: 为
String使用一个Deref方法 - 使用
+连字符 String类型具有to_string方法
str -> String 并不是廉价的
- 切片类型具有
to_string方法
所有权 ownership
所有权是 Rust 的特性之一,字符串保存在变量中便有了 所有权。 &str 没有所有权,String 类型具有所有权。
小结
- 读懂字符串从堆栈开始。
- 字符串操作大致也是分为两种,字面量的 slice 切片类型(栈),String 的堆类型。
- 熟悉标准库提供的方法,用于字符串的处理。