Rust 字符串与集合
字符串
&str 与 String
- 硬编码在代码里的字符串,编译时放到只读内存区,类型是
&str(一份借用的引用) - 生命周期是整个程序,无法让变量获得所有权
字面量转 String
如果需要可变的、拥有所有权的字符串,有四种方式:
let s = "hello".to_string();
let s = String::from("hello");
let s = "hello".to_owned(); // 转化为 owned 类型
let s: String = "hello".into(); // 类型推导
Vector
Vec<T> 是一个可以自动伸缩的数组,数据储存在堆上。
创建
let mut pets = Vec::new();
添加元素
pets.push(item); // 追加到末尾,所有权移交给 Vec
读取元素
vec[index]; // 越界时 panic
vec.get(index); // 越界时返回 None,更安全
遍历
for (i, pet) in pets.iter().enumerate() {
// i 是索引,pet 是 &T 引用
}
// 如果需要取得元素所有权
for pet in pets.into_iter() { }
常用方法
| 方法 | 说明 | 示例 |
|---|---|---|
push(item) |
末尾添加元素 | pets.push(Pet::new(...)) |
pop() |
移除并返回最后一个元素(Option) | let last = pets.pop() |
len() |
返回元素个数 | pets.len() |
is_empty() |
判断是否为空 | pets.is_empty() |
get(index) |
安全获取引用(Option) | pets.get(1) |
remove(index) |
移除指定索引元素(后面元素前移) | pets.remove(0) |
contains(&item) |
判断是否包含某个元素 | pets.contains(&some_pet) |