命令式编程与功能式编程
个人理解,命令式编程(Imperative)指的是编程中详细规定每一步的细节,以达到最大运行效率。功能式编程(functional)指的是以简洁的方式调用已知的函数解决问题。举个例子,做蛋糕,可以告知蛋糕师傅每一步如何做,也可以把理想的蛋糕直接描述给蛋糕师傅,而不考虑蛋糕师傅如何实现这个蛋糕。好的蛋糕师傅总是以最高效率实现我们描述的蛋糕,同样的,好的编程语言也应当提供简洁高效的函数,以方便程序员们进行对算法的描述,"only pay for what you use",达到零开销的抽象。Rust提供了许多方便高效的功能。
Iterator
Rust提供迭代器(Iterator),以方便对常用的数据结构(Collections)进行操作。参考手册std::iter - Rust,Iterator核心是如下代码
trait Iterator {
type Item;
fn next(&mut self) -> Option<Self::Item>;
}
其中type为指向的数据类型,next即下一个Iterator,如果没有会返回None。Rust中使用Iterator的好处在于,Iterator本身定义包括许多常用功能,常用功能可查阅手册Iterator in std::iter - Rust。定义Iterator方式有如下三种
iter()
, which iterates over&T
.iter_mut()
, which iterates over&mut T
.into_iter()
, which iterates overT
.
Rust中的for循环使用的就是Iterator。另外Rust还支持无限数组,但应小心使用
let numbers = 0..;
let five_numbers = numbers.take(5);
for number in five_numbers {
println!("{number}");
//0
//1
//2
//3
//4
}
其他
string转换至str:as_str(&self)
char大写后转为String:c.to_uppercase().nth(0).unwrap_or(c)
打印Vec可使用Debug模式:println!("{:?}", Vec)
标签:实战,Iterator,编程,iter,numbers,蛋糕,Rust From: https://blog.csdn.net/2401_86724578/article/details/142445954