Vector

发布时间: 更新时间: 总字数:457 阅读时间:1m 作者: IP上海 分享 网址

Rust中Vector用来存放多个值

定义

Rust 中 Vec<T> 叫做 vector,由标准库提供,有如下特点:

  • 可以存放多个值

  • T 表示泛型,所有值的类型相同

  • 值在内存中连续存放

  • 创建:

    • 使用 Vec::new() 创建空 vector,示例:
// 需要指定类型
let v: Vec<i32> = Vec::new();
  • 使用初始值创建 Vec<T>vec!
// 自动推导 v 为 i32 类型
let v = vec![1, 2, 3];
  • 常见操作:
// 声明可变 vector,Vec<i32> 也可以不写,自动推导
let mut v: Vec<i32> = Vec::new();

// push 添加元素
v.push(1);
v.push(2);
v.push(3);

// 读元素:索引和get方法
let two: &i32 = &v[1];  // 索引2,可能panioc: index out of bounds

match v.get(1) { // get 获取索引为2的元素,索引越界返回 None
    Some(two) => println!("{}", two),
    None => println!("none"),
}

// for 遍历
for i in &v {
    println!("{}", i);
}
  • 声明周期:Vector 在离开作用域后,vector和里面的元素会被自动清理
  • 所有权和借用规则
    • 不能在同一作用域内同时拥有可变和不可变引用
      • 因为 vector 在内存中连续存放,变化时,需要重新分配内存空间,导致原来的指针失效

示例

使用 enum 存放多种类型数据:

  • enum 的变体可以附加不同类型的数据
  • enum 的变体定义在同一个 enum 类型下
#[derive(Debug)]
enum SheetCell {
    Int(i32),
    Float(f64),
    Text(String),
}

fn main() {
    let row = vec![
        SheetCell::Int(1),
        SheetCell::Float(3.14),
        SheetCell::Text(String::from("hello")),
    ];

    for i in row {
        println!("{:?}", i)
    }
}
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数