0
点赞
收藏
分享

微信扫一扫

rust 常用方法(TODO)

关于 String 的常用方法练习,可以查看这里.

你可以在这里找到答案(在 solutions 路径下)

Vector

相比 [T; N] 形式的数组, Vector 最大的特点就是可以动态调整长度。

基本操作

1. 🌟🌟🌟

fn main() {

let arr: [u8; 3] = [1, 2, 3];

let v = Vec::from(arr);

is_vec(v);

let v = vec![1, 2, 3];

is_vec(v);

// vec!(..) 和 vec![..] 是 同 样 的 宏 , 宏 可 以 使 用 []、()、{}三 种 形 式 , 因 此...

let v = vec!(1, 2, 3);

is_vec(v);

// ...在 下 面 的 代 码 中, v 是 Vec<[u8; 3]> , 而 不 是 Vec<u8>

// 使 用 Vec::new 和 `for` 来 重 写 下 面 这 段 代 码

let v1 = vec!(arr);

is_vec(v1);

assert_eq!(v, v1);

println!("Success!")

}

fn is_vec(v: Vec<u8>) {}

2. 🌟🌟 Vec 可以使用 extend 方法进行扩展

// 填 空

fn main() {

let mut v1 = Vec::from([1, 2, 4]);

v1.pop();

v1.push(3);

let mut v2 = Vec::new();

v2.__;

assert_eq!(v1, v2);

println!("Success!")

}

将 X 类型转换(From/Into 特征)成 Vec

只要为 Vec 实现了 From<T> 特征,那么 T 就可以被转换成 Vec 。

3. 🌟🌟🌟

// 填 空

fn main() {

// array -> Vec

// impl From<[T; N]> for Vec

let arr = [1, 2, 3];

let v1 = __(arr);

let v2: Vec<i32> = arr.__();

assert_eq!(v1, v2);

// String -> Vec

// impl From<String> for Vec

let s = "hello".to_string();

let v1: Vec<u8> = s.__();

let s = "hello".to_string();

let v2 = s.into_bytes();

assert_eq!(v1, v2);

// impl<'_> From<&'_ str> for Vec

let s = "hello";

let v3 = Vec::__(s);

assert_eq!(v2, v3);

// 迭 代 器 Iterators 可 以 通 过 collect 变 成 Vec

let v4: Vec<i32> = [0; 10].into_iter().collect();

assert_eq!(v4, vec![0; 10]);

println!("Success!")

}

举报

相关推荐

0 条评论