collections
Storing Lists of Values with Vectors
Vector
The first collection type we'll look at is Vec<T>
, as known as a Vector. Vector allows you to store more than one value in a single data structure that puts all the values next to each other in memory.
How to use a vector
Let me explain the usage with a simple but classic instance:
//vector
fn ve() {
//create a new instance
let v: Vec<i32> = Vec::new();
//it's mote common to create a vector that has initial values
//as the compiler can infer the type i32 from the initial values,
//so we don't need the Vec<i32> annotation.
let mut v = vec![1,2,3];
//push in some values
v.push(4);
v.push(5);
//two ways to access elements in a vector with index
let third = &v[2];
match v.get(3) {
Some(third) => println!("vector third element is {}", third),
None => println!("there is no third element"),
}
/*
* differences between [] and get
* []: give us a i32 type element or &i32 type if we use &
* get: give us a Option<&T> type element
*/
//what if we access an element with an unexisted index
//let sixth = &v[5]; //panic when run the program
let six = v.get(5); //return None
/*
* iterating over the values in a vector with the for loop
*/
for i in &v {
println!("{}", i);
}
//use mutable reference
for i in &mut v {
*i += 1;//we have to use the dereference operator(*) to get to the value in i before we can use the += operator
}
//pop: removes the last element from a vector and returns it
println!("last element of the vector: {}", v.pop().unwrap());//unwrap is a Option<T> function to get the T value.
//drain: creates a draining iterator that removes the specified range in the vector and yields the removed items.
let dr: Vec<_> = v.drain(1..).collect();//collect is a function of iterator, we'll cover it later.
assert_eq!(v.len(), 1);
}
Little details:
WELCOME TO THE MACHINE
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)