是什么 - >在Rust函数定义中返回类型?

时间:2016-01-26 16:34:01

标签: rust

Rust使用冒号将标识符与类型分开,例如

let x: u8 = 1;

但是,对于函数返回类型 - >用来代替。例如:

fn f() -> u8 { ... }

有人可能会在这里使用冒号:

fn f(): u8 { ... }

虽然使用箭头有一些优先权(例如在Haskell中),但我很好奇这个选择背后的历史原因。另外,我也很好奇这是纯粹的美学原因还是使用箭头有一些技术原因,例如:简化解析。

1 个答案:

答案 0 :(得分:6)

嗯,我只是猜测,但我会说原因纯粹是美学。 :通常发音为“有类型”,而->则发音为“to”。因此f: fn(i32) -> i32表示“f 具有从i32 i32”的函数类型

基本上,有两个上下文可以提到函数的返回值:

  1. 功能项目声明:

    fn foo(x: i32) -> i32 {
      …
    }
    
  2. 将函数赋值给具有显式类型的变量:

    let f: fn(x: i32) -> i32 = foo;
    
  3. 虽然在第一种情况下使用冒号而不是箭头不会影响可读性,但在第二种情况下肯定会这样做。在两种情况下都有相同的符号是完全合理的。

    此箭头的最终原点是Simply Typed Lambda Calculus,此箭头用作函数类型构造函数。从那里它来到Haskell,Scala(好吧,不完全是,他们使用=>)和其他语言。