Rust 关键字的使用


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");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值