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 ...