文章目录
Rust 关键字使用,目的方便查询手册。
字符串与字符字面量
trim()
去掉前后的空格
vstringtrim 为 &str 类型,不是 String 类型
fn main() {
let vstring = " a string! ".to_string();
let vstringtrim = vstring.trim();
assert_eq!(vstringtrim, "a string!");
}
parse::
将字符字面量转为 i32 类型
针对 &str
fn main() {
let vstring = " a string! ".to_string();
let vstringtrim = vstring.trim();
assert_eq!(vstringtrim, "a string!");
}
split_whitespace
用 空格分隔
collect()
可以接受任何可迭代的内容,并将其转换为相关的集合
.split_whitespace().collect()
chars
生成可迭代字节
let mut input = String::new();
println!("请输入一些字符:");
std::io::stdin().read_line(&mut input).expect("read line error !");
for x in input.trim().chars() {
整数
pow()
几次方,100 到 999 的水仙花数。
fn main() {
for i in 100..=999 {
if (i as i32 / 100).pow(3) + (i as i32 % 100 / 10).pow(3) + (i as i32 % 10).pow(3) == i {
println!("{}", i);
}
}
}
迭代器
iter()
迭代器
fn main() {
let v1 = vec![1, 2, 3];
let mut v1_iter = v1.iter();
assert_eq!(v1_iter.next(), Some(&1));
assert_eq!(v1_iter.next(), Some(&2));
assert_eq!(v1_iter.next(), Some(&3));
assert_eq!(v1_iter.next(), None);
}
sum()
所有元素之和
let total: i32 = v1_iter.sum();
assert_eq!(total, 6);
enumerate()
将 iter 的每个输出作为元素逐一封装在对应的元组中返回
let v = vec!['a', 'b', 'c'];
for (index, value) in v.iter().enumerate() {
println!("{} is at index {}", value, index);
}
into_iter()
获取所有权的迭代器
fn main() {
let v1 = vec![1, 2, 3];
let mut v1_iter = v1.into_iter();
assert_eq!(v1_iter.next(), Some(1));
assert_eq!(v1_iter.next(), Some(2));
assert_eq!(v1_iter.next(), Some(3));
assert_eq!(v1_iter.next(), None);
}
iter_mut()
可变迭代器
fn main() {
let mut v1 = vec![1, 2, 3];
let mut v1_iter = v1.iter_mut();
assert_eq!(v1_iter.next(), Some(&mut 1));
assert_eq!(v1_iter.next(), Some(&mut 2));
assert_eq!(v1_iter.next(), Some(&mut 3));
assert_eq!(v1_iter.next(), None);
}
map()
迭代器适配器:接收一个用来处理所有元素的闭包作为参数并会生成一个新的迭代器。
let v1: Vec<i32> = vec![1, 2, 3];
let v2: Vec<_> = v1.iter().map(|x| x + 1).collect();
assert_eq!(v2, vec![2, 3, 4]);
collect()
可以接受任何可迭代的内容,并将其转换为相关的集合
数组 array
push
添加元素
let mut array: Vec<i32> = Vec::new();
array.push(1);
iter
生成迭代器
错误处理
unwrap()
unwrap是Result<T, E>的方法,在实例上调用此方法时,如果是Ok枚举值,就会返回Ok中的对象,如果是Err枚举值,在运行时会panic,报错信息是format!(“{}”, error)
use std::fs::File;
fn main() {
let f = File::open("hello.txt").unwrap();
}
expect()
expect 与 unwrap 的区别是,expect panic 指定的信息
use std::fs::File;
fn main() {
let f = File::open("hello.txt").expect("Failed to open hello.txt");
}