rust中的“箭头函数” ->和=>的区别
初学 rust ,相信你会像我一样被 rust 庞杂的语法震惊到
下面的代码看起来像是 java 和 JavaScript 的结合体
use std::io::prelude::*; use std::fs::OpenOptions; fn main() -> std::io::Result<()> { let mut file = OpenOptions::new() .append(true).open("D:\\text.txt")?; file.write(b" APPEND WORD")?; Ok(()) }
fn main() { let mut v = vec![1, 2, 4, 8]; println!("{}", match v.get(0) { Some(value) => value.to_string(), None => "None".to_string() }); }
关于 => 的用法
rust 作为一门只有6岁的新语言,从 js 、 java 、 python 等高级语言中吸收了很多语法
=> 在 JavaScript 中表示箭头函数,是一种为了为了在定义函数时省略 function 关键字的语法糖
而在 rust 语言中 => 是“匹配准备语法的部分”。
用通俗一点的话来讲就是,在使用 match 语句的时候,对于每一种不同的情况进行匹配,如果匹配成功了之后,就执行这个 => 符号后面所对应的那些代码。
关于 -> 的用法
-> 表明的是函数的返回值类型
就像 python 里面的类型注释
fn max(array: &[i32]) -> i32 { let mut max_index = 0; let mut i = 1; while i < array.len() { if array[i] > array[max_index] { max_index = i; } i += 1; } return array[max_index]; } fn main() { let a = [2, 4, 6, 3, 1]; println!("max = {}", max(&a)); }
您可以使用 str::parse::()方法直接将其转换为 int。let my_string = "27".to_string(); // `parse()` works with `&str` and ...